如何获取MSBuild变量的值

如何获取MSBuild变量的值,msbuild,Msbuild,如何获取MSBuild变量的值(例如,$(MSBuildToolsPath),$(MSBuildAssemblyVersion),$(TargetFrameworkIdentifier),等等) 我需要在C#端获取值,但如果C#代码中没有msbuild.exe,我可以访问它。BuildManager等仅用于构建;微软决定根据功能的不同在不同的名称空间中划分。一旦你知道你需要什么并不难:你只需要对属性求值,所以求值命名空间中的类似乎是正确的选择。它具有公开所有属性的属性成员: var projec

如何获取MSBuild变量的值(例如,
$(MSBuildToolsPath)
$(MSBuildAssemblyVersion)
$(TargetFrameworkIdentifier)
,等等)


我需要在C#端获取值,但如果C#代码中没有msbuild.exe,我可以访问它。

BuildManager等仅用于构建;微软决定根据功能的不同在不同的名称空间中划分。一旦你知道你需要什么并不难:你只需要对属性求值,所以求值命名空间中的类似乎是正确的选择。它具有公开所有属性的属性成员:

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

还不清楚您想要什么-您是否正在尝试以编程方式加载/构建msbuild项目?到目前为止你尝试了什么?关于如何使用C#以编程方式构建以及获取/设置项目属性,已经有足够多的示例了。@stijn是的,我在BuildManager旁边从C#执行msbuild目标。为此,我需要从项目文件中获取所有目标。但是msbuild支持导入可以使用msbuild变量的项目。所以我需要有能力得到变量的值。。。