Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to configure TeamCity to use the MSBuild that ships with Visual Studio 2015?

I'm attempting to build an ASP.NET vNext project in TeamCity. When it tries to build, I get the following error:

C:\...\MyApp.kproj(7, 3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AspNet\Microsoft.Web.AspNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

The file it's looking for is actually located at C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AspNet\Microsoft.Web.AspNet.Props

I'm assuming that I need to get TeamCity to use the version of msbuild that ships with Visual Studio 2015. Is this even possible?

like image 912
w.brian Avatar asked Nov 23 '14 23:11

w.brian


2 Answers

Edit: As of TeamCity 9.x, all works out of the box, but for earlier versions, the below is a solution.

The project import problem should be solved by setting a env.VSToolsPath environment property to C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0.

However, you will not be able to build using the TeamCity included MSBuild runner. But using a command-line runner is very simple. I extracted a meta-runner like this. It has almost the same functionality as the included TeamCity MSBuild 2013 runner. If you need more configurability, just add more parameters.

My meta-runner ended up looking like this:

<?xml version="1.0" encoding="UTF-8"?>
<meta-runner name="MSBuild 2015">
  <description>MSBuild 2015 command line runner</description>
  <settings>
    <parameters>
      <param name="solutionFile" />
      <param name="target" value="Build" />
    </parameters>
    <build-runners>
      <runner name="MSBuild 2015" type="simpleRunner">
        <parameters>
          <param name="command.executable" value="C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" />
          <param name="command.parameters" value="/v:m /m /t:%target% %solutionFile%" />
          <param name="teamcity.step.mode" value="default" />
        </parameters>
      </runner>
    </build-runners>
    <requirements />
  </settings>
</meta-runner>

Note: TeamCity 9.1, due for Q2 2015 is expected to build VS2015 projects natively.

like image 66
Erik A. Brandstadmoen Avatar answered May 20 '23 20:05

Erik A. Brandstadmoen


An alternative workaround is to simply replace the 12.0 tools with 14.0 tools. I just downloaded the lastest Visual Studio 2015 (Update 2) build tools. Installed it on my agents and

  1. Renamed C:\Program Files (x86)\MSBuild\12.0 => C:\Program Files (x86)\MSBuild\12.0-old

  2. Copied C:\Program Files (x86)\MSBuild\14.0 => C:\Program Files (x86)\MSBuild\12.0

Works! You need to have the 14.0-tools in both 12 and 14 folder for things to work.

like image 39
Merrimack Avatar answered May 20 '23 22:05

Merrimack