为什么MSBuild任务ResolveProjectReferences需要很长时间?

时间:2010-07-30 11:56:50

标签: performance msbuild silverlight-4.0 .net-4.0

我有一个Silverlight 4解决方案,需要很长时间才能从VS2010和MSBuild 4命令行构建。

该解决方案包含42个项目,一个是Silverlight应用程序项目,一个是Web应用程序项目,其余是类库。

MSBuild diag摘要显示这些任务需要相当长的时间......

29891 ms  ResolveAssemblyReferences                 68 calls
115609 ms  CopySilverlightApplications                1 calls
131547 ms  ValidateXaml                              36 calls
425688 ms  ResolveProjectReferences                  68 calls
634031 ms  Build                                     71 calls

项目依赖项排列得很好,构建顺序看起来合理。我将所有项目编译成单个输出文件夹,并且所有引用的文件都包含CopyLocal = false。

看起来最糟糕的罪犯是ResolveProjectReferences,但为什么要花这么长时间呢?

2 个答案:

答案 0 :(得分:2)

您是否在构建时启用了代码分析?如果是这样,请尝试禁用它。有一个类似的问题。禁用代码分析后,构建运行速度提高约5倍。

答案 1 :(得分:1)

ResolveProjectReferences必须构建每个引用的项目。 所以有些项目可能会多次构建。

使用文件引用和中央构建过程来消除此问题。

i used this in a project once

我们将构建时间从12分钟缩短为3分钟。