首页 文章

用空的“packages”目录更新NuGet

提问于
浏览
0

我正在使用位于所选目录中的本地Feed的NuGet包 . 让's call it RepositoryDir. I am pushing results of my own builds as nuget packages here. Additionally I'得到多个相互引用的解决方案(作为nuget包)

我需要完成的是这样的情况:

1. Consider two solutions A and B. B needs A package to build.
 2. Build solution A and push A.1.1.0.0.nupkg to RepositoryDir with nuget.exe 
 3. Clear contents of packages folder for B solution     (clear B/packages dir, A.1.0.0.0.nupkg for example).
 4. Update A library in B solution.     nuget.exe update B.sln -Source ../RepositoryDir
 5. Install A library in B solution     nuget.exe restore B.sln -Source ../RepositoryDir

我在3中有这个假设,因为在TeamCity服务器上,更新期间会提供空包目录 .

什么阻止这个计划工作实际上nuget更新说:

Looking for installed packages in '..\packages'

这意味着nuget不会为B解决方案更新A库,因为在packages目录中没有A的先前版本 . 为什么这样工作?我认为nuget看起来像是packages.config并且在这里查找要更新的库 .

有没有办法在B版本中始终下载最新版本的A?

1 回答

  • 1

    当NuGet更新包时,它将卸载旧包,然后安装新包 . 为了卸载旧包,它需要包中的信息,例如包含的引用,因此它可以从项目中卸载所有内容 . packages.config文件中没有该信息 . 在Visual Studio中使用NuGet更新程序包或从命令行使用“nuget.exe update”时都是如此 .

    因此,您需要更改列表中的顺序,并在更新软件包之前恢复正在执行的B的软件包 .

相关问题