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

17
以下是翻译:

现场如下:

我们在公司网络中使用 TFS 2013、Visual Studio Online 和一个本地构建服务器,在经过门控检入和发布后,构建我们的解决方案。

现在我们升级了 Visual Studio 2013 至 Visual Studio 2015 Enterprise,并升级到了新的 .NET 版本。我们非常渴望使用 C# 6 的新特性,但第一次检入后我们发现构建失败了。

(抱歉这里没有图像,因为我的声誉不够高)

异常消息:MSBuild 错误 1 已结束此构建。您可以在上面的消息中找到有关此错误原因的更多具体信息。(类型 BuildProcessTerminateException)异常堆栈跟踪:在 System.Activities.Statements.Throw.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, 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个回答

15

我怀疑你仍在运行2013版本的构建代理?如果是这种情况,请打开您的构建流程模板并查找“运行Msbuild项目”任务。将ToolPath属性设置为安装v14 MsBuild的位置。默认值:

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

这将使您能够使用C# 6的语法元素。

通过删除Roslyn NuGet程序包,您可以删除此帖子中的步骤。现在已经发布Visual Studio 2015,不再需要NuGet程序包。同样的程序包不再支持VS2013。

您下载的新TFS 2015构建代理无法与TFS 2013通信,TFS 2015 XAML构建代理也是如此。只要您的服务器运行TFS 2013,您就必须使用TFS Build 2010直到2013年为止。

连接到VSO时,您应该能够使用新的2015构建代理。但是,您需要使用Web界面创建一个新的构建定义。您无法使用现有的XAML构建定义和新的构建代理。

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


非常感谢您的回答! - David Hessling
1
在设置 ToolPath 时,请确保用双引号将路径括起来。否则,您将会收到构建错误 Compiler error(s) encountered processing expression "C:\Program Files (x86)\MSBuild\14.0\Bin" - Sir Crispalot

8

由于我使用的"TfvcTemplate.12.xaml"中的"Run Msbuild for project"被更抽象的"Run MSBuild"活动所替代,因此我无法设置toolPath属性。我认为它是随着TFS 2013 Update 4而来的。

我在BuildMachine上安装了VS 2015。

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

这对我有用。请参见marson的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接