我刚刚开始在我的项目中使用C#6.0的nameof()
运算符。现在(在办理登机手续时,呃......)我(或更好:构建代理)拒绝构建项目(本地编译就好了),因为它无法找到nameof()
表达式。
我开始在构建控制器和TFS服务器本身上安装VS 2015,但无济于事。如何使用我的TFS 2013 Update 5构建具有C#6.0功能的项目?
我已经考虑过编辑BuildProcessTemplate,但我们在所有构建定义中一直使用默认模板,我甚至不知道这是否是正确的方法。
答案 0 :(得分:20)
您可以在构建代理计算机上安装"Microsoft Build Tools 2015"并将构建模板配置为使用该版本的msbuild,或者在要使用该版本构建的项目中安装Microsoft.Net.Compilers NuGet包。新编译器。
答案 1 :(得分:1)
我在TFS 2015上遇到了同样的问题。我的构建定义采用 XAML构建定义格式 - 这种格式不支持C#6功能,即使您指定 /p:VisualStudioVersion=14.0或15.0,用于高级构建过程参数中的MSBuild参数。
相反,请使用新的构建格式。在Visual Studio 2017中(是的,您可以将VS 2017与TFS 2015一起使用),它可以在“构建定义”部分下找到(请注意,下面是旧版“XAML构建定义”)。
如果以这种方式创建新的构建定义,则会打开一个网站,您必须在其中创建构建步骤。二进制文件显示在“Artefacts”部分下。不幸的是,我发现无法将XAML构建定义转换为新格式,因此您必须从头开始创建它。
在Visual Studio Build步骤中,确保将“Visual Studio Version”字段设置为“Latest”。
提示要将正确的文件放入工件中,您需要定义 Minimatch模式。您可以找到语法 here ,在示例中,您可以找到用于部署Web项目的复制文件模式。