ResolveAssemblyReference慢度 - msbuild速度?

时间:2014-11-02 19:37:31

标签: c# msbuild incremental-build

我有一个项目,其中包含200多个项目。它是一只老鸟。为了使本地构建更快,我运行了一个诊断构建。似乎解决程序集和项目引用正在花费msbuild一段时间。 VS似乎很快就能做到这一点,有没有办法让MSBuild为这些引用使用缓存,或以某种方式更快地解决它?

似乎MSBuild不需要通过增量构建来解决这个程序集引用,对吗?

有没有办法让MSBuild为此报告其内部依赖关系树?

1 个答案:

答案 0 :(得分:0)

VS使用相同的MSBuild引擎来执行构建,因此无论您从VS中观察到什么性能,您都应该能够通过使用MSBuild.exe从命令行启动构建来实现。

要记住几点,这可能解释VS和命令行之间的构建速度的差异:

  1. 如果在VS中构建“仅项目”,即右键单击项目节点,从“仅项目”菜单中选择“构建项目(此)”,然后构建将跳过构建任何引用的项目。这是进行增量构建的最快方法,但您必须提前知道所有依赖项都是最新的。
  2. 如果要从命令行复制它,只需传递参数BuildProjectReferences = false。例如:

    msbuild myproject.csproj /p:BuildProjectReferences=false
    
    1. 可以为多进程构建设置VS的默认值,这在很多情况下会大大提高构建速度。但是在命令行中,默认值始终是执行单进程构建,因此看起来比VS慢得多。始终将/ m传递给msbuild命令行。 E.g:
    2. msbuild MySolution.sln /m