2016-04-16 22 views
0

MsBuild変数(例:$(MSBuildToolsPath)、$(MSBuildAssemblyVersion)、$(TargetFrameworkIdentifier)など)の値を取得するにはどうすればよいですか。私はcsharp側で値を取得する必要がありますが、csharpコードから利用できない場合はmsbuild.exeにアクセスできます。MsBuild変数の値の取得方法

+0

msbuildプロジェクトをプログラム的にロード/ビルドしようとしていますか?これまでに何を試しましたか? C#を使用してプログラムでビルドし、プロジェクトのプロパティを取得/設定する方法については、十分な例があります。 – stijn

+0

@stijnはい、私はBuildManagerによってC#側からmsbuildターゲットを実行します。このためには、プロジェクトファイルからすべてのターゲットを取得する必要があります。しかし、msbuildは、msbuild変数を使用できるプロジェクトのインポートをサポートしています。だから私は変数の価値を得る能力を持っている必要があります... – Serg046

答えて

1

BuildManagerなどはビルド専用です。 MSは、機能別に異なる名前空間にあるMsBuild APIを分割することに決めました。必要なものを見つけ出すのが難しくないことが分かったら、プロパティを評価するだけでよいので、評価名前空間のProjectクラスが適切な選択肢のように思えます。

var project = new Microsoft.Build.Evaluation.Project(@"my.vcxproj"); 
foreach(var property in p.Properties) 
{ 
    System.Console.WriteLine("{0} = {1}", 
    property.Name, property.EvaluatedValue); 
} 
関連する問題