我们的团队目前正在从C#5.0迁移到C#6.0语法,因此应使用Roslyn编译器代替旧版编译器。
我们必须在复杂的解决方案编译过程中使用“ csc.exe”。构建命令如下所示:
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe -nologo -target:library -out:c:\repo\bin64\deb\common.dll @.\rspE0FF.tmp
此命令执行需要〜400ms
“ rspE0FF.tmp”内容看起来像这样(它包含更多* .cs文件,但是,没关系,这在任何文件集上都可以重现):
"c:\repo\shared\common\estimation\complexjob.cs"
"c:\repo\shared\common\stringdecorator.cs"
"c:\repo\shared\common\tplextensions.cs"
"/reference:mscorlib.dll" "/reference:System.dll" "/reference:System.Data.dll" "/reference:System.Xml.dll" "/reference:System.ServiceModel.Activation.dll" "/reference:System.IdentityModel.dll" "/reference:System.Data.Entity.dll"
使用Roslyn编译器时,执行时间喊到〜4100ms 命令与从包文件夹中调用csc.exe相同:
c:\NewRepo\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\tools\RoslynLatest\csc.exe -nologo -target:library -out:c:\repo\bin64\deb\common.dll @.\rspE0FF.tmp
我们必须通过依次运行数百个csc.exe命令来构建解决方案。总编译时间从2分钟增加到8分钟。
这会导致性能下降吗?
关于如何进行调整的任何建议?