6
votes

I have installed the MSBuild (15.4.0) tools for Visual Studio 2017 on a build server. To do this I used the link entitled "Build Tools for Visual Studio 2017" from Visual Studio Downloads

The path to the MSBuild.exe is:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

I have added this path to the Environment Variable 'path'.

I have a powershell script with the following as the body for the build task:

msbuild '..\MyApplication.sln' /t:Build /tv:15.0 /p:GenerateBuildInfoConfigFile=false /p:Configuration=Release /p:RunCodeAnalysis=True /p:VisualStudioVersion=15.0

But, when this is executed (all handled by TeamCity) I find the following in the LOG:

MSBUILD : error MSB1040: ToolsVersion is not valid. The tools version "15.0" is unrecognized. Available tools versions are "2.0", "3.5", "4.0".

The documentation suggests 15.0 should be correct.

EDIT From the 2017 documentation on What's New in MSBuild 15 it states:

MSBuildToolsVersion for this version of the tools is 15.0. The assembly version is 15.1.0.0.

However, the 2017 documentation MSBuild Command Line Reference states:

For MSBuild 4.5, you can specify the following values for version: 2.0, 3.5, and 4.0. If you specify 4.0, the VisualStudioVersion build property specifies which sub-toolset to use. For more information, see the Sub-toolsets section of Toolset (ToolsVersion).

So I'm a bit confused by the nomenclature: MSBuild 15 or MSBuild 4.5...?

1
PATH, the destroyer of good intentions. Type "where msbuild.exe" and you'll probably see the wrong one listed first.Hans Passant
@Hans: C:\Users\Me>where msbuild.exe C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\ MSBuild.exeDrGriff
How about run the build command line from CMD directly? I have set that path on my side, and build a Visual Studio 2017 blank project successfully. You can try to create a blank project with Visual Studio 2017, then build on build server with above method.Leo Liu-MSFT

1 Answers

3
votes

I finally found a fix. It was the path that was incorrect.

The solution was to change the powershell line above to:

$msbuild = 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe'
    & msbuild '..\MyApplication.sln' /t:Build /m /p:GenerateBuildInfoConfigFile=false /p:Configuration=Release /p:RunCodeAnalysis=True /p:VisualStudioVersion=15.0