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

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

最后一个障碍是自动更新repo2项目中的NuGet包。 因为我不知道什么时候repo1库会得到更新(我不应该),我想在repo2项目上的某种生成事件,将自动更新NuGet包。 我现在只是有一个预生成事件,但由于packages.config文件包含已安装软件包的版本号,我不断收到repo2中的修改文件(packages.config文件得到更新)。

所以我的问题是:什么是自动升级NuGet包的好方法,而不会浪费我的repo2 VCS​​? ScottGu说, 在这里 (在评论中)可以将包升级挂接到CI构build,但他没有指定如何和我现在的解决scheme是混乱的。 有没有内置的方式,我失踪了? 还是有更好的解决办法?

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

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

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

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

注意:你需要在你的解决scheme目录中有“Nuget.exe”