TeamCity C#编译错误:无效的表达式术语'int'

Fre*_*ing 6 msbuild teamcity visual-studio-2017

在本地编译(针对.NET Framework 4.6.1)的项目在TeamCity上失败,并显示以下消息:

[CoreCompile] Csc [Csc]使用目录中编译器的共享编译:C:\ Program Files(x86)\ MSBuild\14.0\bin

[19:02:15] [Csc] Services\MyFile.cs(20,55):错误CS1525:无效的表达式术语'int'

[19:02:15] [Csc] Services\MyFile.cs(20,59):错误CS1003:语法错误,','预计

在红色写作的失败编译中我也得到了很多这些:

[步骤5/9]在"C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(845,131)"的BeforeTargets属性中列出的目标"MvcBuildViews"在项目中不存在,将被忽略.

Fre*_*ing 11

首先,如果它可以帮助任何人,当TeamCity失败一步时,该步骤中的很多文本将是红色的(甚至仅仅是警告),所以起初我遇到了一个死胡同,认为第二个错误信息是问题.事实并非如此.

事实证明,我的Resharper 2016.3.2(在Visual Studio 2017上)改变了以下内容

int newInt;
if (!int.TryParse(theChar.ToString(), out newInt))
    return false;
Run Code Online (Sandbox Code Playgroud)

if (!int.TryParse(theChar.ToString(), out int newInt))
    return false;
Run Code Online (Sandbox Code Playgroud)

通过称为"内联变量声明"Alt+ Enter重构(通常听起来非常无害),我当时就好了.

这在本地没有造成任何麻烦,因为它是ac#7语法的东西,但在我的TeamCity构建代理上,编译器会因为MSBuild版本太低而失败.

  • 您可能已经知道这一点,但如果您想使用TeamCity上的最新语言功能,则需要安装最新版本的Build-Tools(来自Chocolatey https://chocolatey.org/packages/microsoft-build-tools/ 15.0.26228.0)或https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017. (3认同)