BuildActivity忽略ToolsVersion

我有一个持续集成构build在BuildAgent上运行,我无法正常工作。 我最近将代码库更改为C#6.0,并将项目更改为ToolsVersion 14。

我确实在Build Server(TFS 2012)上安装了Visual Studio 2015。 如果我现在检查C#6.0代码,第一个项目的构build失败(“$”是意想不到的或什么的)

BuildTemplate是“DefaultTemplate.11.1”如果我检查日志文件,构build调用错误的csc.exe(C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Csc.exe)

如果我确实在没有任何开关的情况下启动MSBuild / 14.0 / Bin / MSBuild可执行文件,那么Build就会成功。 为什么TFS BuildAgent不使用ToolsVersion,我怎样才能让TFS 2012构build我的Visual Studio 2015解决scheme

如果我添加MSBuildArgument /tv:14.0它仍然失败。 因为它调用了MSBuild的版本12,它是Visual Studio 2015附带的.NET 4.6 RC框架的一部分。

更改MSBuild活动的ToolsPath确实可以使构build工作,但如果我尝试运行我的UnitTest,则会吐出子弹。 我得到一个微软的DLL“Microsoft.VisualStudio.TestPlatform.Utilities.dll”exception。 (VS2012也安装在Build Server上)。

更新:我现在unit testing得到一个不同的错误:

TF900548: An error occurred publishing the Visual Studio test results. Details: 'Method not found: 'System.Collections.Generic.IEnumerable&lt;System.String&gt; Microsoft.VisualStudio.TestPlatform.Utilities.InferSettingsHelper.MergeRunSettingsAndFindCompatibleSources(Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture ByRef, Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion ByRef, System.String, System.String, System.Collections.Generic.IDictionary`2<System.String,System.Collections.Generic.KeyValuePair`2<Microsoft.VisualStudio.TestPlatform.ObjectModel.Architecture,Microsoft.VisualStudio.TestPlatform.ObjectModel.FrameworkVersion>>, System.Xml.XPath.IXPathNavigable, System.String ByRef)'.' 

对于我们这些没有生活在内部构build模板的人来说,每天都在为我工作的步骤:

首先find与你的构build相关的模板(如果你已经知道在哪里find它,跳过几个步骤)。

  • 只需右键单击构build定义,然后selectEdit build definition

  • selectProcess选项卡,你会看到模板的名字(很可能是DefaultTemplate,如果你没有定制)。 在最右侧单击Show details以查看模板的path。

在这里输入图像描述

  • 转到“团队资源pipe理器”下的“ Home选项卡,然后单击“ Source control explorer

在这里输入图像描述

  • find模板文件并双击进行编辑。 它应该像这样在graphics视图中出现。 滚动,直到findRun MSBuild for Project

在这里输入图像描述

  • 点击这个项目,将立即提出属性

在这里输入图像描述

  • 点击右边的小图标 – 不要尝试input,因为它可能会爆炸并使Visual Studio崩溃。

  • inputIN QUOTES下面的"C:\Program Files (x86)\MSBuild\14.0\bin"

在这里输入图像描述

现在是最重要的部分

对我来说, Run MSBuild for Project是在两个地方。

所以我只是在两个地方重复上述步骤,然后在检入.xaml文件后,我的构build最终工作正常。

您可能需要从TFS工具中回收代理/控制器。

在这里输入图像描述

编辑模板将msbuild活动ToolPath更改为“MSBuild / 14.0 / Bin / MSBuild”

见Marson的回答。

使用TfvcTemplate.12.xaml生成过程模板和/tv:14.0生成参数为我工作。

使用msbuild aruguments /p:VisualStudioVersion=14.0