我有两个存储库,我需要从另一个存储库中编译库 . 我不想手动检查repo1的更新库,并复制/提交到repo2,因为这是愚蠢的 . 我已经在每个必要库的构建上创建了repo1构建NuGet包,并将它们发布到内部NuGet服务器 . 然后repo2中的项目可以引用这些NuGet包,一切都(几乎)正常工作 .
最后一个障碍是自动更新repo2项目中的NuGet包 . 由于我不知道repo1中的库何时会更新(我不应该),我想在repo2中的项目上进行某种构建事件,它将自动更新NuGet包 . 我目前只有一个预构建事件,但由于packages.config文件包含已安装软件包的版本号,我不断在repo2中获取修改过的文件(packages.config文件得到更新) .
所以我的问题是:什么是自动升级NuGet包而不破坏我的repo2 VCS的好方法? ScottGu说Here(在评论中)它指出了我当前的解决方案是如何凌乱的 . 有没有我错过的内置方式?或者更好的解决方案?
3 回答
您可以修改.cspoj文件以执行“BeforeBuild”目标,如下所示:
请注意:您需要在ur解决方案目录中拥有“Nuget.exe”
你可以利用NuGet包恢复功能(这里有一些信息:http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages)
在项目构建时,它调用“nuget.exe -install”从packages.config重新安装软件包 . 我没有尝试过,但您可以以相同的方式向nuget.targets文件添加更新命令 . (您必须同时调用nuget.exe更新和现有的nuget.exe安装) .
这解释了如何通过MSBuild完成它
http://netitude.bc3tech.net/2014/11/28/auto-update-your-nuget-packages-at-build-time/