如何获取MSBuild变量(例如$(MSBuildToolsPath)
、$(MSBuildAssemblyVersion)
、$(TargetFrameworkIdentifier)
等)的值。
我需要在C#端获取值,但如果从C#代码中找不到msbuild.exe,我可以访问它。
BuildManager等仅用于构建;Microsoft决定根据功能将MSBuild API拆分到不同的命名空间中。一旦你知道了,弄清楚你需要什么并不太难:你只需要评估属性,所以Evaluation命名空间中的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 );
}