更新构建控制器/代理以构建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那里得到答案