csc.exe 使用 "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" 包时编译时间下降
csc.exe compilation time degradation when "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" package is used
我们的团队目前正在从 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 分钟。
这种性能下降是预期的吗?
关于如何调整这个的任何建议?
我们的团队目前正在从 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 分钟。
这种性能下降是预期的吗?
关于如何调整这个的任何建议?