バージョン化CommonAssemblyInfo.CSおよびMSBUILDのバージョン
-
05-10-2019 - |
質問
そのため、ソリューション内のすべてのプロジェクトにリンクされたCommonAssemblyInfo.csがあり、ソースコントロールにチェックされていないRake/Albacoreスクリプトによって動的に生成されます。
また、主に開発者が使用するRubyが利用できない場合に使用するCommonAssemblyInfo.cs.localもあります。
私のソリューションをコンパイルしようとする前に、msbuildタスクまたは他のプロジェクトコンパイルの前に実行されるものを他のプロジェクトコンパイルの前に実行することは可能ですか? Visual Studioでソリューションを開いてbuidlするために、あなたが知っているだけで入力する必要があるコマンドを持たなければならないことを嫌います。
アップデートそこで、ここで説明するように、バッチファイルをソリューションワイドビルドイベントとして使用することになりました。 ソリューション全体のビルド前イベント?, 、CommonAssemblyInfo.csが存在するかどうかを確認し、そうでない場合はCommonAssemblyInfo.cs.localをCommonAssemblyInfo.csにコピーしないかどうかを確認します。
解決
これが私が終わらせたソリューションです。
私は、ビルドスクリプト(Rake + Albacore)によって自動的に生成されるCommonAssemblyInfo.csへのソリューションリンクに各プロジェクトを持っています。
CommonAssemblyInfo.csをソースコントロールに確認できないため、CommonAssemblyInfo.cs.localを作成します。
シンプルなソリューション:commonAssemblyinfo.cs.localをCommonAssemblyinfo.csにコピーするgo.batを作成します。
にとって 純粋に 政治的理由、もし私がこの人々が「非標準的な」ことをしていることについて彼のぴったりだったでしょう。複雑な解決策は次のとおりです。
ソリューションと呼ばれるソリューションでプロジェクトを作成しました。これは、ソリューション内のすべてのプロジェクトが依存しています。これにより、このプロジェクトが最初に構築されるように、ビルド順序が強制されます。このプロジェクトには、次のバッチファイルを呼び出すビルド前イベントが含まれています。
echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs
したがって、砂の中に頭を保持することを選択した開発者は、プロジェクトをチェックアウトし、ビルドスクリプトがまったく存在することを知らないことを知りません。
他のヒント
VS IDEでのコンピレーション、またはチームビルドを通じて編集について話しているのですか?チームビルドについて話している場合は、標準の「コピー」MSBuildタスクを使用する場所として「Afterget」イベントを使用できます。 VS IDEについて話している場合は、「コピー」MSBUILDタスクを使用できます。