是否可以并行运行Nuget update-package

时间:2017-02-27 06:53:36

标签: performance visual-studio-2015 nuget

我有一个包含大约30个子项目的大型解决方案。每个子项目都依赖于一个定期更新的nuget包。所以我最后输入了例如

Update-Package AcmeWunderLib

每隔几天。问题是此过程大约需要10分钟才能运行,结果是每个 package.config $ name $ .csproj 文件中的变化非常小。是否可以并行执行此操作以提高性能,或者任何尝试都会导致Nuget自行损坏?

2 个答案:

答案 0 :(得分:2)

软件包更新时间包括下载软件包和卸载/安装软件包。第一次下载时,下载操作只执行一次,因此卸载/安装操作几乎占用所有更新时间。

根据您的日志,NuGet需要不到一秒的时间来收集依赖项信息,但是需要很长时间来卸载/安装软件包。在我的测试中,只需要2-5秒即可更新一个项目的包。因此,请在遇到此问题时首先检查您的机器性能。

对于这个问题,我想为您提供一些疑难解答:

  1. 更新您的NuGet,NuGet团队对3.5rc和3.4.5的管道进行了更多改进。

  2. 清理套餐供稿中的旧版软件包和NuGet cache

  3. 禁用除nuget.org之外的其他NuGet存储库,也许其中一个存储库超时。

  4. 在其他工作站或构建服务器上测试此问题,您可以在新解决方案中创建一些项目以验证此问题。

  5. 希望能帮到你。

答案 1 :(得分:2)

这是真正的解决方案。

不要在视觉工作室内运行更新

  • 关闭visual studio
  • 从桌面或开始菜单中打开 powershell
  • 确保路径 nuget
  • 运行以下命令,将 devdept.eyeshot 替换为您的软件包,将 WeinCAd.Net.sln 替换为您的解决方案文件。

nuget update -Verbosity detailed -Id devdept.eyeshot .\WeinCad.Net.sln

整个过程持续不到10秒

修改

我被警告说,这并不能完成从Visual Studio中运行nuget更新所做的所有事情。以上所做的就是更改DLL的基本路径。它无法添加和删除引用。不过这对我的用例来说已经足够了。