Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TFS 2013 building .NET 4.6 / C# 6.0

We use TFS 2013 to as our build server. I've started a C# 6.0 project and I am trying to get it to build. I am using the new null-conditional operators, and my build chokes. I've tried installing several things on the TFS server, including the targeting pack and VS 2015. I've tried providing /tv:14.0 to the MSBuild arguments.

Configuration\EntityEntityConfig.cs (270): Invalid expression term '.'
Configuration\EntityEntityConfig.cs (283): Invalid expression term '.'
Configuration\EntityEntityConfig.cs (283): Syntax error, ':' expected
... etc.

At this point, I have no idea what else to try. Any suggestions would be greatly appreciated.

like image 259
zimdanen Avatar asked Sep 18 '15 18:09

zimdanen


4 Answers

People using TFS 2012 have reported success using:

/tv:14.0 /p:GenerateBuildInfoConfigFile=false /p:VisualStudioVersion=14.0

as arguments to MSBuild. Perhaps this might work for you, but so far this does not work for my TFS 2013 build agents.

Update: I finally got this to work on TFS 2013. Here is what I had to do:

  1. Install VS 2015 or Microsoft Build Tools 2015 (I have both).
  2. Edit my build to use a build process template called TfvcTemplate.12.xaml. I guess that any template newer than this one will do, but the DefaultTemplate.11.1.xaml definitely won't work!)
  3. Set MSBuild arguments to /tv:14.0 I did not have to use the other two I mentioned above.
like image 120
Marson Avatar answered Nov 06 '22 02:11

Marson


It seems that the /tv:14.0 command argument doesn't work as expected. See: BuildActivity ignores ToolsVersion

As a workaround, you need to customize the build process template:

  1. Open the template in Visual Studio and find the Run MSBuild for Project MSBuild activity.
  2. Set ToolVersion to "14.0".
  3. Set ToolPath to target to MSBuild14 (by default: "C:\Program Files (x86)\MSBuild\14.0\Bin").
  4. Check in this build process template and re-queue the build.
like image 41
Vicky - MSFT Avatar answered Nov 06 '22 03:11

Vicky - MSFT


If you choose to install VS 2015 on the build machine, there's an important step: open it for first use, and make sure it's licensed. Otherwise, you'll continue to experience build failures.

like image 1
Jim Roth Avatar answered Nov 06 '22 02:11

Jim Roth


If you run the DefaultTempalte.11.1.xaml then find the msbuild activity (there are 2 in this template and their label is "Run MSBuild for Project") and change the ToolPath property to the path of the msbuild toolset (for me that was "C:\Program Files (x86)\MSBuild\14.0\Bin").

Nothing else is necessary.

like image 1
Kostas Xagoraris Avatar answered Nov 06 '22 01:11

Kostas Xagoraris