.net 如何从Visual Studio宏获取msbuild路径?
我正在尝试创建一个上下文菜单项,它将在某些扩展上运行msbuild。 我在解决方案资源管理器中找到了用于检查当前选定项扩展名的宏 我所要做的就是在该文件上运行msbuild。我不想硬编码路径。.net 如何从Visual Studio宏获取msbuild路径?,.net,visual-studio,visual-studio-2008,msbuild,.net,Visual Studio,Visual Studio 2008,Msbuild,我正在尝试创建一个上下文菜单项,它将在某些扩展上运行msbuild。 我在解决方案资源管理器中找到了用于检查当前选定项扩展名的宏 我所要做的就是在该文件上运行msbuild。我不想硬编码路径。 因此,我认为必须有一种方法来获取当前加载的解决方案的msbuild路径。使用保留属性$(MSBuildToolsPath),该属性将根据.NET版本解析为以下内容: C:\Windows\Microsoft.NET\Frameworks\v4.0.30319\ 还有$(MSBuildExtensions
因此,我认为必须有一种方法来获取当前加载的解决方案的msbuild路径。使用保留属性
$(MSBuildToolsPath)
,该属性将根据.NET版本解析为以下内容:
C:\Windows\Microsoft.NET\Frameworks\v4.0.30319\
还有$(MSBuildExtensionsPath)属性系列(包括32位和64位特定的属性),它将指向:
C:\Program Files\MSBuild\
--来自《MSBuild诡计》一书中的技巧19和43
编辑:添加要提取的宏代码
以下Visual Studio宏将枚举所有当前属性,包括$(MSBuildToolsPath)、$(MSBuildToolsRoot)和$(MSBuildToolsPath32),最后一个属性可能仅在64位计算机上,我不确定
'
'注意:您需要有一个开放式解决方案、一个活动文档,
'和输出窗口中可见的生成窗格
'
公共模块模块1
公共子列表属性()
Dim doc As Document=DTE.ActiveDocument
作为项目项的Dim项目项=doc.projectItem
Dim project As project=PROJECTTEM.ContainingProject
Dim评估项目作为Microsoft.Build.Evaluation.Project=_
Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection_
.LoadProject(project.FullName)
将ow变暗为EnvDTE.OutputWindow
ow=DTE.ToolWindows.OutputWindow
将wp调暗为输出窗格
wp=ow.OutputWindowPanes.Item(“构建”)
Dim e作为System.Collections.Generic.IEnumerator(Microsoft.Build的_
.评估。项目属性)
e=evalProject.AllEvaluatedProperties.GetEnumerator()
e、 MoveNext()
对于i=0的evalProject.AllEvaluatedProperties.Count-1
像线一样变暗
s=s+e.Current.Name+“=”+e.Current.UnevaluatedValue+vbCrLf
wp.OutputString(个)
e、 MoveNext()
s=“”
下一个
端接头
端模块
但是如何使用Visual Studio宏中的保留属性?如Alt-F11所示。