更新构建控制器/代理以构建C#6 /.NET 4.6应用程序

这是场景:

我们使用Visual Studio Online和我们公司网络中的内部构建服务器与TFS 2013在门控签入和发布后构建我们的解决方案。

现在我们从Visual Studio 2013升级到Visual Studio 2015 Enterprise并升级到新的.NET版本。 我们非常渴望利用C#6的新function,但在第一次登记后我们经历了构建失败。

(抱歉没有图片,因为我缺乏声誉)

exception消息:MSBuild错误1已结束此构建。 您可以在上面的消息中找到有关此错误原因的更多具体信息。 (类型BuildProcessTerminateException)exception堆栈跟踪:位于System.Activities.CodeActivity.InternalExecute(ActivityInstance实例,ActivityExecutor执行程序,BookmarkManager bookmarkManager)的System.Activities.Statements.Throw.Execute(CodeActivityContext context),位于System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem .ExecuteBody(ActivityExecutor executor,BookmarkManager bookmarkManager,Location resultLocation)ApplicationManager.cs(33,0)意外字符’$’ApplicationManager.cs(33,0); 预期

似乎构建代理不理解新语法并仍然使用旧版本编译。

我为解决这个问题所做的是:

  • 在内部部署的构建服务器上安装Visual Studio 2015(仍安装旧版Visual Studio 2013)

  • 重新启动构建控制器

  • 按照此处的步骤操作: https : //stackoverflow.com/a/28327275/4919063

这基本上是安装Visual Studio 2015和新的Microsoft Build Tools

  • 这里的步骤非常有希望:

我用其中一个模板创建了一个新的构建定义

通过Visual Studio Online的Web访问创建新的代理程序池。 下载

ConfigureAgent.ps1并在构建服务器上执行它以创建新的

剂。 但我无法弄清楚如何利用新创建的代理。

我的问题是:如何更新构建代理程序以便在没有失败的情况下运行

尊重新的.NET版本?

我怀疑你还在运行2013 Build代理吗? 在这种情况下,打开构建过程模板并查找“运行项目的Msbuild”任务。 将ToolPath属性设置为v14 MsBuild的安装位置。 默认:

C:\Program Files (x86)\MSBuild\14.0\Bin 

这应该允许您使用C#6语法元素。

通过删除Roslyn nuget包删除此post中的步骤,现在Visual Studio 2015是RTM,不再需要NuGet包。 VS2013不再支持相同的软件包。

您下载的新TFS 2015构建代理不与TFS 2013通信,TFS 2015 XAML构建代理也不会。 只要您的服务器运行TFS 2013,您就会陷入使用TFS Build 2010(包括2013年)。

连接到VSO时,您应该能够使用新的2015构建代理 。 但是您需要使用Web界面创建新的构建定义。 您不能将新的构建代理用于您的exuiting XAML构建定义。

您还可以安装TFS 2015 XAML代理。 要安装它, 请在构建服务器上安装TFS 2015,并仅运行配置XAML构建代理的步骤 。 这将从您的计算机中删除TFS 2013构建服务器。

我无法设置toolPath属性,因为“在项目中运行Msbuild”被我使用的“TfvcTemplate.12.xaml”中更抽象的“运行MSBuild” – 活动所取代。 我认为它附带了TFS 2013 Update 4。

我在BuildMachine上安装了VS 2015。

我通过将/tv:14.0参数添加为MSBuild参数(在Build-Definition \ Process \ 2.Build \ 5.Advanced \ MSBuild参数中)来更改构建

这对我有用。 从marson那里得到答案