当前位置:  开发笔记 > 编程语言 > 正文

String Interpolation不会在TeamCity上构建

如何解决《StringInterpolation不会在TeamCity上构建》经验,为你挑选了1个好方法。

对于我支持的旧项目,我一直在进行一些现代化改造.这包括各种各样的事情:将.NET Framework提升到4.6,以及其他升级.我们有一些余地可以做的事情是进行语法升级,只要我们不改变业务逻辑.

我们最近还安装了Visual Studio 2015,以及最新最好的ReSharper,它揭示了"String Interpolation"现在是我们可以在代码中完成的事情.对于那些不知道的人,字符串插值是通过string.Format调用的语法糖,如下所示:

// Normal, pre-C#6 formatting:
var foo = string.Format("Some string {0}", bar);

// C#6 String Interpolation
var foo = $"Some string {bar}";

这非常有用,因为它使消息更容易阅读,并且通常占用更少的字符.

......然而,TeamCity似乎不同意.当我在提交中推送代码时,我收到以下错误:

Directory\SomeFile.cs: error CS1056: Unexpected character '$' [C:\ProjectDirectory\Project.Core\Project.Core.csproj]

从表面上看,似乎某种类型的前C#6构建器正在受到攻击,因为这是C#6的新功能.

这就是我所观察到的,这就是为什么我认为这是正在发生的事情:

    构建配置指向C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 这让我暂停,因为可能是我们的构建代理上安装了.NET 4.6.

    但是,尝试从Microsoft安装程序直接安装.NET 4.6时,它会失败,因为.NET 4.1已经安装在bulid代理上.

    我们的构建配置的编译步骤也让我停下来.注意构建引擎和框架版本的前两行分别是[exec] Microsoft (R) Build Engine version 4.6.1055.0 [exec] [Microsoft .NET Framework, version 4.0.30319.42000] 构建引擎显然是v4.6,但.NET框架是4.0!我读得对吗?

    最后,构建日志的最后一行:[NAnt output] External Program Failed: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe (return code was 1)不是 4.6 ......是吗?

问题:双重.第一个问题可能是愚蠢的,但我实际上是在编译.NET 4.6吗? 其次,如果我指向.NET 4.6,我可以通过什么方式获得C#6中的String Interpolation语法来实际构建?

我显然遗漏所有这些,我不确定A)我错过了多少东西,或者B)我应该对它们做些什么.



1> Andrew Gray..:

我觉得自己是正确的; 有趣的路径/版本实际上表明了真正的问题:MSBuild.exe正在运行的不是VS2015安装的那个.

当我读从这里,版本MSBuild.exe被发现在C:\Windows\Microsoft.NET\Framework\v4.0.30319实际上是前C#6版本; 出于某种原因,安装Visual Studio 2015年也不会改变这个安装!

相反,您应该MSBuild.exe将对存储的副本的调用指向C:\Program Files (x86)\MSBuild\14.0\Bin针对VS2015安装的最新C#版本进行编译.


为了完整起见,您实际上不需要在每个构建代理上安装VS2015; 如果你有几个,它会变得非常麻烦.只需安装[Microsoft Build Tools 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48159),TeamCity就应该在代理要求中满足要求.然后,您可以在MSBuild步骤中选择Build Tool 2015(如果这是您正在使用的).
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有