使用C# 6.0特性运行TFS构建

19

我最近开始在我的项目中使用C# 6.0的nameof()操作符。现在(在检查时,呃...)我(或更好地说是构建代理)拒绝构建项目(但本地编译没问题),因为它找不到nameof()表达式。

我已经在构建控制器和TFS服务器上安装了VS 2015,但都没有用。如何让我的TFS 2013更新5来构建具有C# 6.0功能的项目?

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

2个回答

21

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


1
谢谢您。能详细说明一下如何配置构建模板吗? - SeToY
1
嗯,我本以为安装TFS 2015就可以解决问题了,但事实并非如此。我收到了“无效表达式项”的错误提示。 - Simon_Weaver
1
@GiulioVian,您如何将构建指向来自Nuget包的Microsoft.Net.Compilers? - Maslow
4
安装构建工具只是第一步,您还必须使用不同的构建定义或修改默认定义。请参阅 https://dev59.com/nFwY5IYBdhLWcg3waXEF?rq=1 - Quango
我无法在Windows Server 2008 R2上安装MS Build Tools 2015。有什么想法吗? - Charles Bretana
显示剩余4条评论

1
我在TFS 2015中遇到了同样的问题。我的构建定义是以XAML构建定义格式为基础的,即使您在高级构建过程参数中指定/p:VisualStudioVersion=14.0或15.0的MSBuild参数,该格式也不支持C#6功能。
相反,请使用新的构建格式。在Visual Studio 2017中(是的,您可以在TFS 2015中使用VS 2017),它在“构建定义”部分下可用(请注意,在此下面有旧版“XAML构建定义”部分)。

enter image description here

如果您以这种方式创建新的构建定义,将打开一个网站,在那里您需要创建构建步骤。二进制文件出现在“Artefacts”部分下面。不幸的是,我没有找到将XAML构建定义转换为新格式的方法,因此您必须从头开始创建它。
在Visual Studio构建步骤中,请确保字段“Visual Studio版本”设置为“Latest”。
提示:要将正确的文件放入工件中,您需要定义Minimatch模式。您可以在此处找到语法here,在示例中,您可以找到用于部署Web项目的复制文件模式。

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