我最近安装了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\
不知道从哪里开始。有什么建议吗?
答案 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\
(您可以通过键入 + 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.0
和VCTargetsPath
,因为复制非常繁琐。对于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)'