この投稿をよく読みました: Visual Studio のソース管理統合は Perforce とどのように連携しますか? 非常に有益であることがわかりました。ただし、VS での Perforce の使用を妨げている特定の問題があります。
ほとんどの場合、プラグインについて不満はありません (新しいプラグインはチーム全体で変換する必要があるため、現時点では不可能なため、私はまだ P4VSCC プラグインを使用しています)。特異性を理解すると、プラグインの操作で 1 つだけ問題が発生しました。
当社のソリューションには、単一の展開パッケージに組み込まれた多くのプロジェクトが含まれています。そのため、各アセンブリは同じようにバージョン管理されます。これと他の一般的な側面に対応するために、AssemblyInfo.cs ファイルで通常見られる AssemblyVersion および AssemblyFileVersion 属性を含む共通の "SharedVersionInfo.cs" ファイルを定義しました。このファイルは、ソリューション フォルダーの下の Assets フォルダーに保存され、リンクされたファイルとして各プロジェクトの Properties フォルダーに追加されます。これは、バージョンを 1 か所で変更するだけですべてのアセンブリが更新されるため、バージョン管理の観点からはうまく機能します。ただし、Perforce には、新しい開発者が最初にソリューションを開いたとき、または新しいプロジェクトが追加されたときに、これに関する問題があります。
新しいプロジェクトを追加する場合、これはそれほど大きな問題ではありませんが、ソリューションには 80 個のプロジェクトが含まれているため (現在も増え続けています)、これは新しい開発者にとって実行可能な救済策ではありません!
私の理解では、この問題は、VS が各プロジェクトのバインディング ルートをどこにあると考えるかに関係しているということです。いくつかの調査の後、プロジェクトの MSSCCPRJ.SCC ファイルがどこにあるかを見つけました。ソリューション構造全体に多数の SCC ファイルが散在していることがわかりました。そう...
最初の質問: ソリューション構造に複数の MSSCCPRJ.SCC ファイルがあるのはなぜですか?
また、ソリューションで使用する共有/共通プロジェクトもいくつかあります。これにより、次のフォルダー構造になります。
/Source
/CommonTools
/ProjectA
ProjectA.csproj
/ProjectB
ProjectB.csproj
/MySolution
/Assets
SharedVersionInfo.cs
/Project1
Project1.csproj
/Project2
Project2.csproj
:
/ProjectZ
ProjectZ.csproj
MySolution.sln
ProjectA と ProjectB の両方が MySolution.sln の一部である場合
2 番目の質問: /Source フォルダーがルートと見なされるようにバインディングをセットアップするにはどうすればよいですか? これにより、ソリューションに含まれるすべてのプロジェクトが同じバインディング ルートの下にあることが保証されます。Perforce はこのフォルダをルートと見なしますが、VS とプラグインで同じことを行うにはどうすればよいですか?