58

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

MSBuild 不包含“VCTargetsPath”属性的值

我发现有人在 Connect 上报告了这个问题,微软的回应是:

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

感谢您的反馈。您遇到的问题已在下一个公共版本 Visual Studio 中得到修复。

Jim Griesmer
Visual C++ 团队

极好的。那么如何恢复 VCTargetsPath 以便我的项目能够再次运行?

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

我浏览到注册表中的 VCTargetPath 值,它具有以下值:

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

不知道从这里去哪里。有什么建议么?

4

10 回答 10

80

Gavin Pugh 给出的解决方案似乎可以解决问题,尽管我没有尝试过。在卸载 VS11 的开发者预览版后,我也遇到了这个问题。我想我知道什么是真正的错误。

姆拉登扬科维奇走在了正确的轨道上。我的机器上缺少以下两个(必要的)注册表项之一:

  • 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\

在此处输入图像描述(您可以在 Windows 中通过键入+R+regedit+Enter来编辑注册表项)

对我来说,上面列出的第二个值是缺失的值。添加后,我可以再次使用我的项目。

于 2012-02-16T01:36:01.497 回答
7

这是对我有用的东西:

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

于 2012-01-02T04:09:18.647 回答
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

于 2012-01-05T01:25:21.030 回答
4

对于那些通过谷歌搜索在这里的人:

如果您之前安装了 VS 2015 或 vs2010 之后的任何更高版本的 vs,然后又卸载了,这里就是您的解决方案。

在下面的错误消息中:

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

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

转到开始/运行/注册表>

寻找 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 有望再次工作。

于 2016-07-21T11:50:16.340 回答
1

呃,我终于找到了答案,顺便说一句,它并没有给我同样的错误信息——我得到:

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

出于某种原因,它适用于 32 位构建,但不适用于 64 位构建。

VCTargetPath*无论如何,解决方案是将所有密钥从复制HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild ToolsVersions\14.0HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0。他们对我来说失踪了。

其实我只是抄VCTargetsPathVCTargestPath14因为抄是挺乏味的。对于 VC++ 2015 来说似乎已经足够了。

于 2017-06-28T11:11:25.830 回答
0

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

设置工具版本为我解决了

于 2013-03-06T18:40:27.450 回答
0

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

于 2012-03-28T08:40:55.817 回答
0

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

于 2015-11-26T01:52:05.007 回答
0

当我尝试在没有安装 c++ Visual Studio 构建工具的情况下构建一个 c++ 项目时,我来到了这里。我的解决方案是从“Visual Studio 2017 工具”选项卡下的下载页面下载 Visual Studio 构建工具安装程序,使用“Visual C++ 构建工具”和“.NET 桌面构建工具”选项运行安装程序。

于 2018-08-21T21:17:44.827 回答
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)'
于 2020-07-14T21:59:07.357 回答