【问题标题】:Running TFS Build with C# 6.0 features使用 C# 6.0 功能运行 TFS 构建
【发布时间】:2015-10-14 13:35:48
【问题描述】:

我最近才开始在我的项目中使用 C# 6.0 的 nameof() 运算符。现在(签入时,呃...)我(或者更好的是:构建代理)拒绝构建项目(在本地编译得很好),因为它找不到 nameof() 表达式。

我开始在构建控制器以及 TFS 服务器本身上安装 VS 2015,但无济于事。如何让我的 TFS 2013 Update 5 构建具有 C# 6.0 功能的项目?

我已经考虑过编辑 BuildProcessTemplate,但我们在所有构建定义中一直使用默认模板,我什至不知道这是否是正确的方法。

【问题讨论】:

    标签: c# visual-studio tfs msbuild c#-6.0


    【解决方案1】:

    您可以在构建代理计算机上安装 "Microsoft Build Tools 2015" 并将构建模板配置为使用该版本的 msbuild,或者在您要使用新编译器构建的项目中安装 Microsoft.Net.Compilers NuGet 包.

    【讨论】:

    • 我想强调这一点。在构建代理机器上并排安装多个版本的编译器是不够的,您必须通过选择所需的工具链来指定应该使用哪一个。
    • 谢谢。想详细说明如何为此配置构建模板?
    • 嗯,我原以为安装 TFS 2015 可以解决问题 - 但没有。我收到“无效的表达式术语”错误
    • @GiulioVian 您将如何从 nuget 包中将您的构建指向 Microsoft.Net.Compilers?
    • 安装构建工具只是第一步,您还必须使用不同的构建定义或修改默认值。见stackoverflow.com/questions/32659106/…
    【解决方案2】:

    我在使用 TFS 2015 时遇到了同样的问题。我的构建定义采用 XAML 构建定义格式 - 这种格式支持 C#6 功能,即使您指定 /p:VisualStudioVersion=14.0 或 15.0 用于高级构建过程参数中的 MSBuild 参数。

    改为使用新的构建格式。在 Visual Studio 2017 中(是的,您可以将 VS 2017 与 TFS 2015 一起使用),它位于“构建定义”部分(请注意下面有旧部分“XAML 构建定义”)。

    如果您以这种方式创建新的构建定义,则会打开一个网站,您必须在其中创建构建步骤。二进制文件出现在“Artefacts”部分下。不幸的是,我找不到将 XAML 构建定义转换为新格式的方法,因此您必须从头开始创建它。

    在 Visual Studio 构建步骤中,确保将“Visual Studio 版本”字段设置为“最新”。

    提示:要将正确的文件放入您的工件中,您需要定义 Minimatch 模式。您可以找到语法 here ,在示例中,您可以找到用于部署 Web 项目的复制文件模式。

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 2015-07-13
      • 1970-01-01
      • 2017-08-20
      • 2016-02-10
      • 2011-05-04
      • 2017-01-08
      • 2018-03-31
      • 2014-01-17
      相关资源
      最近更新 更多