MSBuild does not contain a value for the "VCTargetsPath" property
Solution 1
It seems reasonable that the solution Gavin Pugh gave would fix the problem, though I didn't try it. I too ran into this problem after uninstalling the Developer Preview of VS11. I think I know what is really wrong though.
Mladen Jankovic was on the right track. One of the follow two (necessary) registry keys was missing on my machine:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
- Key Name:
VCTargetsPath
- Type:
REG_SZ
- Value:
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
- Key Name:
-
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\4.0
- Key Name:
VCTargetsPath
- Type:
REG_SZ
- Value:
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
- Key Name:
(You can edit registry keys in Windows by typing +R+regedit+Enter)
For me, the second value I listed above was the one that was missing. After I added it, I was able to work with my project again.
Solution 2
Here's the thing that did trick for me:
Change registry value named DefaultToolsVersion
located in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\4.0
from 2.0
to 4.0
. Do the same thing in Wow6432Node
too.
Solution 3
The registry editing method suggested by "Mladen Jankovic" didn't work for me.
I just ran a repair on Visual Studio 2010 (run the setup.exe on the VS2010 install disc, or invoke the 'uninstall' via Control Panel->Programs). It did the trick for me.
You also should run the SP1 install again.
For what it's worth, my 'add-ins' (including Incredibuild) behaved fine after this. They didn't need to be reinstalled or repaired. My settings/window/debugger placement also was retained.
Apparently this issue only presents itself if you uninstall the Developer Preview of VS11: http://www.gamefromscratch.com/post/2011/12/15/Do-not-remove-Visual-Studio-2011-developer-preview!.aspx
Solution 4
For those who are here by google search :
If you had previously installed VS 2015 or any later versions of vs after vs2010, and then uninstalled, Here is the solution for you.
In the error message below :
Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140\'))"
14.0 is the version number of VS2015. Unfortunately, the VS2015/2012 uninstaller forgets one of its registry keys, which then causes that error when you go back to VS2010.
Go to start/run/ regedit >
Look for HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0 (12.0 as well)
And
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\14.0 (12.0 as well )
If there is a key 14.0/12.0 here, delete it and your VS2010 will hopefully work again.
Solution 5
Ugh I finally found the answer for this, which incidentally didn't give me the same error message - I get:
error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
For some reason it worked fine with 32-bit builds, but not 64-bit builds.
Anyway, the solution is to copy all the VCTargetPath*
keys from HKLM\SOFTWARE\Wow6432Node\Microsoft\MSBuild ToolsVersions\14.0
to HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0
. They were missing for me.
Actually I only copied VCTargetsPath
and VCTargestPath14
because copying is quite tedious. Seems to be sufficient for VC++ 2015.
superstatic
Updated on July 09, 2022Comments
-
superstatic almost 2 years
I recently installed the Visual Studio 11 Developer Preview to try it out, and now my VS 2010 projects won't open. Instead, I get the following error message:
MSBuild does not contain a value for the "VCTargetsPath" property
I found someone that had reported the issue here on Connect, and the response from Microsoft was:
Posted by Microsoft on 12/2/2011 at 5:25 PM
Hi Afshin,Thanks for the feedback. The issue you ran into is fixed for the next public release Visual Studio.
Jim Griesmer
Visual C++ TeamFantastic. So how do I restore VCTargetsPath so my projects will work again?
"VCTargetsPath is a toolset property that is defined in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0. "
I browsed to the VCTargetPath value in the registry and it has the value:
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
Not sure where to go from here. Any suggestions?