MSBuild不包含“VCTargetsPath”属性的值

时间:2011-12-13 23:54:04

标签: visual-studio visual-studio-2010 msbuild projects-and-solutions visual-studio-2012

我最近安装了Visual Studio 11 Developer Preview来试用它,现在我的VS 2010项目无法打开。相反,我收到以下错误消息:

  

MSBuild不包含“VCTargetsPath”属性的值

我发现有人报告了此问题here on Connect,而微软的回复是:

  

Microsoft于2011年12月2日下午5:25发布   嗨Afshin,

     

感谢您的反馈。您遇到的问题已针对下一个公开发布的Visual Studio修复。

     吉姆·格里斯默(Jim Griesmer)   Visual C ++团队

优秀。那么如何恢复VCTargetsPath以便我的项目再次起作用呢?

  

“VCTargetsPath是在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0中定义的工具集属性。”

我浏览了注册表中的VCTargetPath值,它的值为:

$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\

不知道从哪里开始。有什么建议吗?

10 个答案:

答案 0 :(得分:72)

Gavin Pugh给出的解决方案似乎是合理的,但是我没有尝试过。卸载VS11的开发者预览版后,我也遇到了这个问题。我想我知道错在哪里。

Mladen Jankovic走上正轨。我的机器上缺少以下两个(必要的)注册表项之一:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
    • 键名:VCTargetsPath
    • 输入:REG_SZ
    • 价值:$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\4.0
    • 键名:VCTargetsPath
    • 输入:REG_SZ
    • 价值:$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\

(您可以通过键入enter image description here + R + regedit + Enter)在Windows中编辑注册表项。

对我来说,上面列出的第二个值是缺少的值。在我添加之后,我能够再次使用我的项目。

答案 1 :(得分:6)

这对我来说很有意思:

DefaultToolsVersion中名为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0的注册表值从2.0更改为4.0。在Wow6432Node也做同样的事情。

答案 2 :(得分:4)

“Mladen Jankovic”建议的注册表编辑方法对我不起作用。

我刚刚在Visual Studio 2010上运行了修复程序(在VS2010安装光盘上运行setup.exe,或通过“控制面板” - >“程序”调用“卸载”)。它为我做了诀窍。

您还应该再次运行SP1安装。

对于它的价值,我的'加载项'(包括Incredibuild)在此之后表现得很好。它们不需要重新安装或修理。我的设置/窗口/调试器位置也被保留。

显然,如果您卸载VS11的开发人员预览版,则此问题才会出现: http://www.gamefromscratch.com/post/2011/12/15/Do-not-remove-Visual-Studio-2011-developer-preview!.aspx

答案 3 :(得分:4)

对于谷歌搜索的用户

如果您以前在vs2010之后安装了VS 2015或任何更高版本的vs,然后卸载,以下是适合您的解决方案。

在下面的错误消息中:

  

无法评估属性表达式   “$([MSBuild的] :: ValueOrDefault( '$(VCTargetsPath)', '$(MSBuildExtensionsPath32)\ Microsoft.Cpp \ V4.0 \ V140 \'))”

14.0是VS2015的版本号。不幸的是,VS2015 / 2012卸载程序忘记了其中一个注册表项,然后当您返回到VS2010时会导致该错误。

转到开始/运行/ regedit>

寻找  HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0(12.0以及)

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolsVersions \ 14.0(12.0)

如果此处有一个密钥14.0 / 12.0,删除它,您的VS2010将有望再次运行。

答案 4 :(得分:1)

呃我终于找到了答案,顺便说一下,我没有给出同样的错误信息 - 我得到了:

  

错误MSB4019:找不到导入的项目“C:\ Microsoft.Cpp.Default.props”。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。

出于某种原因,它在32位版本中运行良好,但不适用于64位版本。

无论如何,解决方案是将所有IDE密钥从VCTargetPath*复制到HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild ToolsVersions\14.0。他们不见了。

实际上我只复制了HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0VCTargetsPath,因为复制非常繁琐。对于VC ++ 2015来说似乎已经足够了。

答案 5 :(得分:0)

如果使用VS 2010 SP1,请转到控制面板|卸载程序,卸载/更改 VS 2010 SP1 ,然后选择重新应用SP1。它对我有用。

答案 6 :(得分:0)

我一直遇到同样的问题,发现工具集标签没有在项目节点中设置

设置工具版本为我解决了

答案 7 :(得分:0)

我使用C:\ Windows \ SysWOW64 \ regedit.exe并转到HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ 3.5并在3.5版本的文件夹中,它在defaulttoolsversion中列出了2.0,所以我将其修改为3.5并且一切正常现在

答案 8 :(得分:0)

当我尝试构建未安装c ++ Visual Studio构建工具的c ++项目时,我到达了这里。我的解决方案是从“ Visual Studio 2017工具”选项卡下的downloads page下载Visual Studio构建工具安装程序,并使用“ Visual C ++构建工具”和“ .NET桌面构建工具”选项运行安装程序。 / p>

答案 9 :(得分:0)

我还遭受HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0下缺少的注册表值的困扰。

使用以下命令添加缺少的条目即可解决此问题。

REG ADD HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0 /v VCTargetsPath /t REG_SZ /d '$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0@VCTargetsPath)'
REG ADD HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0 /v VCTargetsPath14 /t REG_SZ /d '$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0@VCTargetsPath14)'