如何自动更新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=""$(SolutionDir).nuget\NuGet" update "$(ProjectDir)packages.config" -Id your.package.id" /> </Target>
注意:你需要在你的解决scheme目录中有“Nuget.exe”