如何自动将NuGet包更新到最新的可用版本

the*_*nja 39 continuous-integration nuget nuget-package

我有两个存储库,我需要从另一个存储库中编译库.我不想手动检查repo1的更新库,并复制/提交到repo2,因为这是愚蠢的.我已经在每个必要库的构建上创建了repo1构建NuGet包,并将它们发布到内部NuGet服务器.然后repo2中的项目可以引用这些NuGet包,一切都(几乎)正常工作.

最后一个障碍是自动更新repo2项目中的NuGet包.由于我不知道repo1中的库何时会更新(我不应该),我想在repo2中的项目上进行某种构建事件,它将自动更新NuGet包.我目前只有一个预构建事件,但由于packages.config文件包含已安装软件包的版本号,我不断在repo2中获取修改过的文件(packages.config文件得到更新).

所以我的问题是:什么是自动升级NuGet包而不破坏我的repo2 VCS​​的好方法?ScottGu说这里(在评论中)可以将软件包升级挂钩到CI版本,但他没有说明我当前的解决方案是如何混乱的.有没有我错过的内置方式?或者更好的解决方案?

Ale*_*ion 3

您可能可以利用 NuGet Package Restore 功能(此处有一些信息:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

在项目构建时,它调用“nuget.exe -install”来重新安装packages.config中的包。我还没有尝试过,但您可以以相同的方式将 Update 命令添加到 nuget.targets 文件中。(您必须调用 nuget.exe update 和现有的 nuget.exe install)。

  • 我对此进行了研究,发现仅将包恢复到解决方案级别包文件夹(而不是实际项目)。我也不想将文件签入项目,并且“nuget.exe update”和“nuget.ext install”都不会将所有文件放回到项目中。基本上我正在寻找的是[此功能](http://nuget.codeplex.com/workitem/1239) (5认同)