私たちのCIプロセスのためのMSBuildスクリプトを作成し、このスクリプトでは、私は解決策コンパイルするのMSBuildタスクを使用します。私はC#のプロジェクトファイルがMSBuild 4.0から、MSBuildタスクからC#プロジェクトファイルに展開するプロパティ名を渡す方法は?
- のような出力パスを使用したい
<PropertyGroup> <MyOutPath>Output</MyOutPath> </PropertyGroup> <MSBuild Projects="MySolution.sln" Targets="Clean;Rebuild" Properties="OutputPath=$(MyOutPath)\%24(AssemblyName)"> </MSBuild>
をプロジェクトのプロジェクトMyAssemblyName1
- 出力の\ MyAssemblyName2の出力の\ MyAssemblyName1 MyAssemblyName2
として、 semblyNameプロパティはC#プロジェクトファイルからのもので、プロジェクトをビルドするときにOutputPathプロパティに展開します。
今、%24(AssemblyName)はファイルシステム上でOutput \ $(AssemblyName)を作成していますが、これは私が望んでいないものです。
$(AssemblyName)を使用すると、親のMSBuildファイルでは何も展開されません。
ターゲットプロジェクトファイルの後でAssemblyNameプロパティの解決を延期する方法はありますか?
また、私はCIシステムからの影響を最小限に抑えたいので、.csprojファイルを変更したくありません。
:これは前に述べたようにあなたは、あなたのスクリプトにインポートすることができ
MySolution.sln.proj
ファイルを生成します。インポートはアイテムをサポートしていますか? –さらに、すべてのプロジェクトを必ずしも含むわけではないソリューションがあるので、正しいプロジェクトファイルを処理するためにslnファイルを解析する必要があります。 –
MSBuild 4.0を使用している場合、[Import](http://msdn.microsoft.com/en-us/library/92x05xfs.aspx)要素は実際にワイルドカードをサポートしているので、 ' '特定のディレクトリ内のすべてのプロジェクトファイルをインポートします。 –