繁体   English   中英

构建时的 NuGet 包还原极其缓慢(每个项目约 10 秒)

[英]NuGet Package Restore on build extremely slow (~10sec per project)

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

我不认为这是一个构建问题。 尝试手动执行从命令行传入的 NuGet.exe,您可能会发现它需要相同的时间。

过去,如果我的项目中有一些资源文件(图像等),其中“复制到输出目录”设置为“始终复制”,我会一直遇到 NUGet 包下载内容的问题。 如果您有这个,请尝试将其更改为“如果较新则复制”。

有时它可能会非常缓慢,就像昨天一样。
您可以在此处查看服务的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM