运行 使用 C# 6.0 功能构建 TFS

Running TFS Build with C# 6.0 features

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

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

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

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

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

而是使用新的构建格式。在 Visual Studio 2017 中(是的,您可以将 VS 2017 与 TFS 2015 一起使用),它在 "Build definitions" 部分下可用(请注意,下面是旧部分 "XAML Build definitions")。

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

在 Visual Studio 构建步骤中,确保字段 "Visual Studio Version" 设置为 "Latest"。

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