我在一个包含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,问题不再出现。