Teamcity NuGet update带有空的“";“包装”;目录

Teamcity NuGet update带有空的“";“包装”;目录,teamcity,nuget,nuget-package,Teamcity,Nuget,Nuget Package,我使用的是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.ex

我使用的是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 1.考虑两个解决方案A,B. B需要一个包来构建。 2.生成解决方案A并使用nuget.exe将A.1.1.0.0.nupkg推送到RepositoryDir 3.清除B解决方案的packages文件夹的内容
(例如,清除B/packages目录,A.1.0.0.0.nupkg)。 4.更新B解决方案中的库。
nuget.exe更新B.sln-Source../RepositoryDir 5.在B解决方案中安装库
nuget.exe restore B.sln-Source../RepositoryDir 我在3中有这个假设。因为在TeamCity服务器上,更新期间将提供空包目录

阻止此方案工作的实际上是nuget update说:

Looking for installed packages in '..\packages' 正在“..\packages”中查找已安装的软件包 这意味着nuget不会更新B解决方案的库,因为在packages目录中没有以前版本的A。为什么会这样?我想nuget会在这里查找packages.config并查找要更新的库


有没有办法在B构建期间始终下载a的最新版本?

当NuGet更新软件包时,它将卸载旧软件包,然后安装新软件包。为了卸载旧的包,它需要包中的信息,例如包含了哪些引用,这样它就可以卸载项目中的所有内容。该信息在packages.config文件中不可用。在Visual Studio中使用NuGet更新包或从命令行使用“NuGet.exe update”时,这是正确的


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

感谢您的响应!所以事实上,当我在更新之前进行恢复时,RepositoryDir中应该有一个.1.0.0.0.nupkg?在TeamCity上构建时,我认为只有最新版本的可用版本,因此这似乎是不可能的。还原将拉下当前安装在项目中的NuGet软件包,该软件包将是A.1.0.0.nupkg。然后,nuget更新将安装一个1.1.0.0.nupkg