MSBUILD.exe执行速度非常慢

时间:2018-02-09 02:36:37

标签: performance visual-studio-2015 msbuild c#-6.0 msbuild-4.0

体验,MSBUILD.exe需要很长时间。

此命令执行 50+分钟: C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ amd64> MSBUILD C:\ xyz.sln / p:Configuration = Release / p:OutDir = c:/ test

此命令执行 1分钟: C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ amd64> MSBUILD C:\ xyz.sln / p:Config = Release / p:OutDir = c:/ test

问题:

1:可以使用/ p:Config = Release而不是/ p:Configuration = Release?

2:使用/ p:Configuration = Release?

进行构建这么长时间的根本原因是什么?

1 个答案:

答案 0 :(得分:2)

  

1:可以使用/ p:Config = Release而不是/ p:Configuration = Release?

恐怕不是。就像Lex评论一样,/p:Config=Release不是一个有效的论据。我用该参数创建了一个测试样本,但我发现该解决方案是使用默认配置Debug构建的:

enter image description here

因此参数/p:Config=Release无效。

  

使用/ p:Configuration = Release?

进行构建这么长时间的根本原因是什么?

如上所述,当您使用/p:Config=Release进行构建时,VS / MSBuild将使用默认配置Debug构建解决方案。众所周知,Debug模式的优化要少得多,因为那些可能会破坏指令和代码行之间的映射。因此,编译器在那里做的工作较少。 即使完整的调试版本较慢,Debug构建也会经常发生,并且通常可以比Release版本更多地利用增量构建。因此,Debug构建通常不需要像Release构建那样做很多工作。因此,使用Debug配置的命令将减少构建时间。

此外,当您第一次完成构建解决方案时,您应该清理解决方案,否则,解决方案中的大多数项目都将跳过构建。因为大多数都是最新的。因此,您应该在第一次构建解决方案后清理解决方案。

此外,如果您想了解有关构建过程的详细信息,可以通过将/v:diag添加到构建命令行来将“记录详细程度”设置为值Diagnostic:

MSBUILD C:\xyz.sln /p:Configuration=Release /p:OutDir=c:/test /v:diag

enter image description here