【问题标题】:TFS 2015 build template cannot build C#7 featuresTFS 2015 构建模板无法构建 C#7 功能
【发布时间】:2017-08-20 19:42:38
【问题描述】:

我们使用 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)

【问题讨论】:

  • 将此视为您应该开始过渡到新构建系统的标志。

标签: .net tfs msbuild visual-studio-2017 c#-7.0


【解决方案1】:

MSBuild V14.0 不知道 v15.0 是什么。

您需要安装Visual Studio 2017 build tools。

【讨论】:

  • 我已经安装了 VS 2017 Build 工具。 C# Roslyn 编译器现在作为 Visual Studio 安装程序的一部分提供,我已经在构建服务器上安装了它。然而,它似乎并没有什么不同。会不会是因为 Team Foundation Server 2015 无法识别未来出现的新语言?
  • 这就是 VS 2017 构建工具的用途。构建时使用的 msbuild.exe 和 csc.exe 的路径是什么?
  • 我检查了构建的日志文件,我可以看到它使用了错误版本的 MS 构建“MSBuild 自动检测:使用来自 'C:\Program Files ( x86)\MSBuild\14.0\bin'."。这对我来说没有意义,因为我在 msbuild 参数中手动指定使用 v15.0。
  • 我有同样的问题:我已经安装了 VS Build Tools 2017,但是构建代理无法识别它,它继续使用旧的 msbuild
【解决方案2】:

无法识别 xaml 构建中的 15.0。支持的前进方式是真正使用新的构建代理基础设施。

您可以为 Visual Studio 选项选择 最新。请参考:https://www.visualstudio.com/en-us/docs/build/steps/build/visual-studio-build

【讨论】:

  • 最新版本在 XAML 版本中不可用
【解决方案3】:

我发现了一个类似的问题,我尝试在 TFS 2013 上构建 VS 2017 项目,最后我解决了这个问题。

解决方案是使用旧的构建过程模板(XAML),就像TFS 2012的默认构建模板一样,将模板中的ToolPath设置为指向TFS 2013上MsBuild.exe的路径。我认为这个解决方案也应该正在为 TFS 2015 工作。

【讨论】:

  • 工具路径在哪里?
【解决方案4】:

正如许多建议的答案所提到的,如果不手动修改模板本身,则根本不可能使用默认 XAML 构建过程模板之一来使用 MSBuild v15。

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

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

我可以保证这将适用于构建项目。虽然不太确定执行测试用例。其他人提到它不起作用,但我自己还没有真正尝试过。

自从写下这个问题以来,我已经开始从 XAML 构建迁移到新的构建系统,它在构建过程中提供了更多的自定义,如果您阅读文档,实际上使用/理解要简单得多。

https://docs.microsoft.com/en-us/vsts/build-release/

【讨论】:

  • 我想确认这个答案以支持调整旧版 2012 TFS 设置。安装 2017 Build Tools 以及 ToolPath 的手动规范使我们能够在 TFS 构建代理中构建 C# 7.x 源代码。我们还有其他限制因素使其成为必要的选择,而不是采取可能的两阶段升级路径到 TFS2019。谢谢。
猜你喜欢
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 2016-03-28
  • 1970-01-01
  • 2016-01-19
相关资源
最近更新 更多