使用C#6.0function运行TFS Build

我刚刚开始在我的项目中使用C#6.0的nameof()运算符。 现在(在办理登机手续时,呃…)我(或更好:构建代理)拒绝构建项目(本地编译就好了),因为它无法找到nameof()表达式。

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

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

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

我在TFS 2015中遇到了同样的问题。我的构建定义采用XAML构建定义格式 – 即使您为高级版本中的MSBuild参数指定了/p:VisualStudioVersion=14.0或15.0,此格式也不支持C#6function工艺参数。

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

在此处输入图像描述

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

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

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