如何获取MsBuild变量的值(例如$(MSBuildToolsPath),$(MSBuildAssemblyVersion),$(TargetFrameworkIdentifier)等)。我需要在csharp端获取值,但是如果csharp代码中没有它,我可以访问msbuild.exe。
答案 0 :(得分: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 );
}