有类似的问题,VS 会挂起 45 秒左右,然后构建 4 秒并完成。45 秒的挂起不会对 GUI 产生任何输出,VS 会挂起。
使用 ProcMon,当我构建这个项目时,我可以通过 devenv.exe 在 /packages/ 文件夹上看到超过 300 万个文件操作(并且会在之后继续一段时间)!!构建的第一步您可以看到它正在检查每个包以查看它是否需要进行包还原(它没有)。
由于我倾向于将所有事情都归咎于 NuGet,因此我在Visual Studio -> Options -> Nuget Package Manager -> General下禁用了 NuGet Package Restore “允许 NuGet 下载丢失的包”复选框。 令我高兴的是,构建速度非常快。总共5秒!
事实证明,我们在启用构建时启用了包还原(我认为现在在 VS 中默认启用)并且我们还将包签入源代码控制。似乎这会导致 TFS 以某种方式颠簸...检查恢复包必须触发 TFS 进行一些源代码控制操作检查。
仅供参考,这是 VS2013 更新 4 - Nuget 版本:2.8.50926.663,在 NumberOfProjects = 38 的 sln 上,但我可以重新创建这个挂起,只需构建一个具有 2 个依赖项的 csproj。
更新:
SccNumberOfProjects = 53 的 Sln 上的本地主机“全部重建”花费 7:05,视觉工作室冻结/无响应 2 分钟
- 在没有冻结的 2 核 i5 上降至 4:14
- 在 4 核 i7 上降至 2:44
另外:这是在具有各种文件监视安全工具的机器上,可能不会为整个过程增加任何速度......并且可能是罪魁祸首。
2021 年更新:
如果您正在寻找一种范式转变,新的SDK 样式 csproj 格式(请参阅迁移工具)+ nuget PackageReference使更新几乎是即时的(对于上述场景中的相同项目, < 20 秒) - 强烈建议您升级任何旧项目. ** 已知不兼容 - 网站包引用不支持通过 nuget 的静态文件引用(结帐 LibMan)