我正在使用位于所选目录中的本地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 回答
当NuGet更新包时,它将卸载旧包,然后安装新包 . 为了卸载旧包,它需要包中的信息,例如包含的引用,因此它可以从项目中卸载所有内容 . packages.config文件中没有该信息 . 在Visual Studio中使用NuGet更新程序包或从命令行使用“nuget.exe update”时都是如此 .
因此,您需要更改列表中的顺序,并在更新软件包之前恢复正在执行的B的软件包 .