Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何从Visual Studio宏获取msbuild路径?_.net_Visual Studio_Visual Studio 2008_Msbuild - Fatal编程技术网

.net 如何从Visual Studio宏获取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。 我在解决方案资源管理器中找到了用于检查当前选定项扩展名的宏

我所要做的就是在该文件上运行msbuild。我不想硬编码路径。
因此,我认为必须有一种方法来获取当前加载的解决方案的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所示。