我有两个存储库,我需要从另一个存储库中编译库。我不想手动检查repo1的更新库,并复制/提交到repo2,因为这是愚蠢的。我已经在每个必要库的构建上创建了repo1构建NuGet包,并将它们发布到内部NuGet服务器。然后repo2中的项目可以引用这些NuGet包,一切都(几乎)正常工作。
最后一个障碍是自动更新repo2项目中的NuGet包。由于我不知道repo1中的库何时会更新(我不应该),我想在repo2中的项目上进行某种构建事件,这将自动更新NuGet包。我目前只有一个预构建事件,但由于packages.config文件包含已安装软件包的版本号,我不断在repo2中获取修改过的文件(packages.config文件得到更新)。
所以我的问题是:什么是自动升级NuGet包而不破坏我的repo2 VCS的好方法? ScottGu说Here(在评论中)可以将软件包升级挂钩到CI版本,但他没有说明我当前的解决方案是如何混乱的。有没有我错过的内置方式?或者更好的解决方案?
答案 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)
答案 3 :(得分:-1)
您可以修改.cspoj文件以执行“BeforeBuild”目标,如下所示:
<Target Name="BeforeBuild">
<Exec Command=""$(SolutionDir).nuget\NuGet" update "$(ProjectDir)packages.config" -Id your.package.id" />
</Target>
请注意:您需要在ur solution目录中使用“Nuget.exe”