是否有Visual Studio Build Profiler?

Mar*_*tin 17 .net c# msbuild build

我的VS.NET 2008解决方案需要更长的时间来编译(ASP.NET 3.5 + ASP.NET MVC 2 + C#),我想知道是否有办法知道哪个项目需要更长的编译时间以及为什么?我禁用了一些项目的编译,这有助于减少构建时间,但我希望它更快.

Pos*_*Man 15

Tools -> Options -> Projects and Solutions -> Build and Run
Run Code Online (Sandbox Code Playgroud)

然后改变 MSBUild project build output verbosity

当正常(默认为最小)时,它为每个项目提供时间,因此可以用来指出造成减速的原因.(假设您使用"输出"窗口)

或者调整到更高级别以查看编译期间发生的更多细节.

  • 在我的例子中,msbuild 的时间在 1 到 2 秒之间,而项目在交给 msbuild 之前需要 80 秒来处理一些未知的事情。 (2认同)

Sco*_*rch 8

您可以使用MSBuild Profiler来分析每个项目及其任务所花费的时间.它有点旧,似乎没有得到支持,但我仍然发现它非常有用.从此处下载并安装,然后从VS命令行运行如下:

MSBuild.exe MySolution.sln /l:MSBuildProfileLogger,MSBuildProfiler,Version=1.0.1.0,Culture=neutral,PublicKeyToken=09544254e89d148c
Run Code Online (Sandbox Code Playgroud)

完成后,它将弹出一个GUI,其中包含解决方案的树形结构细分,包含处理每个项目和任务所花费的时间.

  • 我个人对此没有任何运气 - 得到了很多 NullReference 异常 - 假设这个代码项目现在已经很古老了。您可能会发现 [MSBuildStructuredLog 有点有用](https://github.com/KirillOsenkov/MSBuildStructuredLog)。我的速度变慢原来只是 Windows Defender (MsMpEng.exe) 通过在构建时扫描来占用磁盘使用量 - 通过 procmon 验证。 (2认同)