20
votes

We've installed the Microsoft Build Tools 2013, from http://www.microsoft.com/en-us/download/details.aspx?id=40760, but after installation, there is no C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120 directory created, and so it cannot find required targets files.

Do we really need to install a version of VS2013 for the required targets/props files to be created?

2
Yeah, pretty unlikely you'll get the C++ build targets with that.Hans Passant
@HansPassant Thanks ... so I guess there's no option other than to install VS on the build server or copy over all the targets and create the registry keys manually. Let me know if there's another, better, option.Richard Anthony Freeman-Hein
This is software that's protected by copyright and is not distributable. Ask your corporate counsel what the correct option looks like, you'll get a plain and unequivocal answer.Hans Passant
Actually I have the same problem with C# projects. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0 was missing after MSBuild tools install and I was unable to build a .sln containing managed projects (all .csproj's) because of missing .targets. It builds without problems when I copy this directory from my dev machine (which has visual studio installed).Ilan
Richard you're right, but unfortunately the download page for Microsoft Build Tools 2013 explicit says that it includes compiler for C# and Visual Basic. Hence, C++ compiler is not included, I'm afraid. I would ask Microsoft to complete the download bundle with the missing compilers, since on my PC I still can't build... :(jeanie77

2 Answers

21
votes

The answer is yes, you need to install VS2013. Then add a new string value named VCTargetsPath12 to

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\12.0\11.0

The value should be:

$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))

You also need to change the

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\12.0\11.0\VCTargetsPath

value to:

$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))

If you continue to have problems with some projects, open the .vcxproj file and make sure the Project element's ToolsVersion attribute is set to 12.0 instead of 4.0. Do the same for the .vcxproj.filters.

If you get some "SetEnv" related errors just rebuild those projects that failed.

Verified on multiple machines to work.

3
votes

NOTE: Weirdly this did only work for debug configuration. There seems to be missing some parts afterall. I ended up installing VS2013 express.

If you are ok with having Visual Stuido 2015 installed you can either change your VS2015 current isntallation or newly install it. From the 2015 installer, select Windows 8.1 and Windows Phone 8.0/8.1 Tools and common Tools for Visual C++ 2015:

enter image description here

After installation completed, you will find the platform Toolset below (in my case VS2017):

enter image description here

Credits: https://stackoverflow.com/a/42687137/4870255