C#编译失败表达式太长或太复杂而无法编译

时间:2019-04-11 10:25:54

标签: c# msbuild csc

这是.NET 4.6.1的C#项目,我们通过调用.NET 4.6.1附带的MSBuild.exe来构建它。以前使用C#编译器csc.exe可以成功编译代码,其版本低于-

  C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc.exe /version
Microsoft (R) Visual C# Compiler version 4.6.1055.0
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.

由于某些不可避免的基础架构政策,我们现在必须在其他构建机器上构建该项目。新的构建机器使用的旧版本的csc.exe编译器如下所示-

E:\....\BuildTools\MSBuild\15.0\Bin\Roslyn>csc.exe /version
2.9.0.63208 (958f2354)

但是,几个cs(C#)文件编译失败,从而导致较旧版本的csc.exe编译器出现跟随错误-

 SysimageServiceSerializer.cs(13475,151): error CS8078: An expression is too long or complex to compile

我了解此错误的原因,该错误是由于编译器空间不足而引起的,解决方案是简化代码。但是,这些将导致很多代码更改。我在想是否有任何方法可以在不更改代码的情况下解决此问题。

我看到了此链接https://www.grapecity.com/en/forums/spread-archive/error-an-expression-is-too,并尝试了给定的选项,将其添加到csproj文件中的以下标记

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>

还尝试使用两个附加参数/ t:rebuild和/ maxcpucount:20调用MSBuild。但是仍然没有运气。

任何想法都可以在不更改代码的情况下解决该问题,如上所述,它已经得到了较早的编译,但是一旦我们使用旧版本的csc.exe,它就会失败

0 个答案:

没有答案