我在一个包含 12 个项目的解决方案中构建非常缓慢的问题,其中 7 个启用了 NuGet 包还原。诊断输出通常显示如下:
[...]
9 ms ResolveProjectReferences 1 calls
18 ms _CleanGetCurrentAndPriorFileWrites 1 calls
32 ms CoreClean 1 calls
56 ms ResolveAssemblyReferences 1 calls
77 ms _CopyFilesMarkedCopyLocal 1 calls
400 ms CoreCompile 1 calls
9082 ms RestorePackages 1 calls
这是典型的;对于每个项目,RestorePackages 通常需要 9-10 秒,而对于 7 个项目,这会使我的构建时间增加了 70 秒。构建相同解决方案的同事都没有这个问题。我已禁用所有扩展并且 Visual Studio (2012) 是最新的。
我已经在 CodePlex 上提交了一个问题,但我也想询问这个知识渊博的社区,以防万一有快速修复,并寻求帮助解决这个问题。
编辑:我完全删除了 NuGet——RestorePackages 目标仍在执行,它仍然需要 10 秒。我需要在 csproj 文件中手动设置RestorePackages = false以使其消失。
编辑 2:如果我注释掉 NuGet.targets 中的 RestorePackages 任务中的内容,问题也会消失。像这样:
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<!--<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />-->
</Target>
如果我删除 CheckPrerequisites 目标并没有什么不同。
编辑:我安装了 Windows 8.1,不再出现问题。