TFS 2015构建模板无法构建C#7特性。

9

我们使用TFS 2015作为我们的构建服务器,进行与xaml构建定义相关的持续集成。TfvcTemplate12.xaml是我们正在使用的构建过程模板。当Visual Studio 2015发布时,我们通过设置MSBuild参数来更新我们的构建模板。

/p:VisualStudioVersion=14.0

完成这些操作后,构建服务器成功地能够使用C# 6功能构建项目。现在Visual Studio 2017已经发布,同时也有了C# 7,我认为我可以简单地在构建服务器上安装Visual Studio 2017,并更新MSBuild参数以使用v15.0。但是事实证明这并不起作用,构建代理仍然使用无法编译C# 7新功能的MSBuild v14.0。为了进一步尝试,我尝试将工具版本设置为15.0。
/tv:15.0

但是那也没有起作用。构建失败,提示非常普通,没有有用的信息帮助我解决这个问题。有人成功实现了吗?

Exception Message: MSBuild error 1 has ended this build. You can find more specific information about the cause of this error in above messages. (type BuildProcessTerminateException)
Exception Stack Trace:    at System.Activities.Statements.Throw.Execute(CodeActivityContext context)
   at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager)
   at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

这是一个信号,表明你应该开始过渡到新的构建系统。 - Daniel Mann
4个回答

6

正如许多建议中提到的那样,使用默认的XAML构建流程模板之一来使用MSBuild v15是不可能的,除非手动修改模板本身。

我成功地通过修改DefaultTemplate.11.1.xaml并查找MSBuild活动来使其工作。在那里,您需要手动将ToolPath属性设置为安装有MSBuild v15的文件名。

ToolPath="C:\Program Files (x86)\Visual Studio\2017\<more path>\msbuid.exe"

我可以保证这种方法适用于构建项目,但对于执行测试用例则不太确定。其他人提到它不会起作用,但我自己并没有尝试过。
自从写下这个问题后,我已经开始迁移到新的构建系统,它在构建过程中提供了更多的自定义选项,并且如果你阅读文档,实际上更加简单易懂。
请参考https://learn.microsoft.com/en-us/vsts/build-release/

我想确认这个答案,支持适应遗留的2012 TFS设置。安装2017 Build Tools以及手动指定ToolPath使我们能够在TFS构建代理中构建C# 7.x源代码。我们有其他限制,这使得这是一个必要的选择,而不是采取可能需要进行两阶段升级路径到TFS2019的选择。谢谢。 - David W

4

1
我已经安装了VS 2017构建工具。C# Roslyn编译器现在作为Visual Studio安装程序的一部分提供,我已经在构建服务器上安装了它。然而,似乎并没有什么区别。这可能是因为Team Foundation Server 2015无法识别未来中出现的新语言吗? - darrunategui
这就是VS 2017构建工具的作用。在构建过程中,msbuild.exe和csc.exe的路径是什么? - Paulo Morgado
我检查了构建的日志文件,发现它正在使用错误版本的MS Build:“MSBuild自动检测:从'C:\Program Files (x86)\MSBuild\14.0\bin'中使用msbuild版本'14.0'。”这对我来说没有意义,因为我在msbuild参数中手动指定了使用v15.0。 - darrunategui
我有同样的问题:我已经安装了VS Build Tools 2017,但构建代理没有识别它,仍然使用旧版的msbuild。 - Gerardo Lima

1
我发现了一个类似的问题,我尝试在TFS 2013上构建VS 2017项目,最终解决了这个问题。解决方法是使用旧的构建过程模板(XAML),像TFS 2012默认的构建模板一样,将模板中的ToolPath设置为指向TFS 2013上MsBuild.exe的路径。我认为这个解决方案也适用于TFS 2015。

工具路径在哪里? - StingyJack

0

最新版本不可用于 XAML 构建。 - StingyJack

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