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

时间:2012-03-20 21:03:44

标签: 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说Here(在评论中)可以将软件包升级挂钩到CI版本,但他没有说明我当前的解决方案是如何混乱的。有没有我错过的内置方式?或者更好的解决方案?

4 个答案:

答案 0 :(得分:3)

你可以利用NuGet包恢复功能(这里有一些信息:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

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

答案 1 :(得分:0)

这解释了如何通过MSBuild

来完成

http://netitude.bc3tech.net/2014/11/28/auto-update-your-nuget-packages-at-build-time/

> aVector <- 1:10
> cachemean(aVector)
Error in x$getmean : $ operator is invalid for atomic vectors

答案 2 :(得分:0)

在Visual Studio中 工具-> Nuget软件包管理器->管理解决方案的软件包->更新选项卡

如果有要安装的更新,则有一个带有“更新”按钮的“全部检查”选项

Update button

答案 3 :(得分:-1)

您可以修改.cspoj文件以执行“BeforeBuild”目标,如下所示:

<Target Name="BeforeBuild">
  <Exec Command="&quot;$(SolutionDir).nuget\NuGet&quot; update &quot;$(ProjectDir)packages.config&quot; -Id your.package.id" />
</Target>

请注意:您需要在ur solution目录中使用“Nuget.exe”