如何获取MSBuild变量的值



如何获取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 );
}

最新更新