【问题标题】:TeamCity C# compile error: Invalid expression term 'int'TeamCity C# 编译错误:无效的表达式术语“int”
【发布时间】:2017-05-15 17:55:20
【问题描述】:

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

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

[19:02:15][Csc] Services\MyFile.cs(20, 55): error CS1525: Invalid expression term 'int'

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

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

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

【问题讨论】:

    标签: msbuild teamcity visual-studio-2017


    【解决方案1】:

    首先,如果它可以帮助任何人,当 TeamCity 失败一个步骤时,该步骤中的很多文本将是红色的(甚至仅仅是警告),所以起初我相信第二个错误而陷入了死胡同消息是问题所在。不是。

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

    int newInt;
    if (!int.TryParse(theChar.ToString(), out newInt))
        return false;
    

    进入

    if (!int.TryParse(theChar.ToString(), out int newInt))
        return false;
    

    通过称为 “内联变量声明”Alt+Enter 重构(这通常听起来很无害)我当时想,好吧,好吧。

    这不会在本地造成任何问题,因为它是 c# 7 语法的东西,但在我的 TeamCity build-agent 上,由于 MSBuild 版本太低,编译器会失败。

    【讨论】:

    • 您可能已经知道这一点,但如果您想在 TeamCity 上使用最新的语言功能,您需要安装最新版本的 Build-Tools(来自 Chocolatey chocolatey.org/packages/microsoft-build-tools/15.0.26228.0)或 visualstudio.com/downloads/#build-tools-for-visual-studio-2017 .
    • @BoyanKostadinov 谢谢,伙计。是的,当然,目前我只是未重构它。我也很疯狂,因为我以前没有见过那个符号。原来,我真的没有:D
    • 我有这个,但它在 Visual Studio 中编译,但 TeamCity 使用的是 MSBuild。奇怪的是,一个允许,另一个不允许!
    • 您也可以从2.0.1版本开始添加对Microsoft.Net.Compilers的引用,这样可以解决teamcity中的问题。
    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2011-06-22
    • 2020-09-23
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多