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

时间:2015-07-27 13:44:25

标签: c# visual-studio-2015 tfsbuild tfs2013

这是场景:

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

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

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

  

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

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

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

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

  • here中非常有希望的步骤:

我使用其中一个模板

创建了一个新的构建定义

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

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

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

我的问题是:如何在

中更新构建代理以便无故障运行

尊重新的.NET版本?

2 个答案:

答案 0 :(得分:15)

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

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

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

通过删除Roslyn nuget包删除the steps from this post,现在Visual Studio 2015是RTM,不再需要NuGet包。 VS2013不再支持相同的软件包。

您下载的新TFS 2015构建代理不会与TFS 2013交谈,TFS 2015 XAML构建代理也不会。只要您的服务器运行TFS 2013,就会使用TFS Build 2010直至2013年。

连接到VSO you should be able to use the new 2015 build agent时。但是您需要使用Web界面创建新的构建定义。您不能将新的构建代理用于您的exuiting XAML构建定义。

您还可以安装TFS 2015 XAML代理。要安装它install TFS 2015 on the build server and only run the steps to configure the XAML build agent。这将从您的计算机中删除TFS 2013构建服务器。

答案 1 :(得分:8)

我无法设置toolPath属性,因为"为项目运行Msbuild"被我用过的" TfvcTemplate.12.xaml"中更抽象的"运行MSBuild" -Activity取代。我认为它附带了TFS 2013 Update 4.

我在BuildMachine上安装了VS 2015。

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

这对我有用。请参阅marson

的回答