用空的“packages”目录更新NuGet

时间:2014-04-09 08:03:29

标签: teamcity nuget nuget-package

我正在使用位于所选目录中的本地Feed的NuGet包。我们称之为RepositoryDir。我在这里推动我自己的构建结果作为nuget包。另外,我有多个相互引用的解决方案(如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 个答案:

答案 0 :(得分:1)

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

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