我们如何安排保留解决方案使用的所有 NuGet 包的本地副本?

How do we arrange to keep local copies of all NuGet packages used by a solution?

我们正在启动一个非常长期的项目(这么说吧,我们需要能够在不少于 十五 年后编译它)。我们真的不认为我们依赖的随机 NuGet 包会存在那么久。

安排保留所有内容的本地副本的正确方法是什么?

也就是说,我们应该能够将我们的固定依赖项部署到新机器上,执行 git clone 然后是 something 然后是 msbuild 并且所有内容都构建 没有任何互联网连接

您可以host您自己的本地 Nuget 服务器。

您还可以在解决方案中启用 Nuget 包还原。

您可能希望在项目中保留有关如何托管服务器和备份位置的说明,以便 15 年后幸存者可以恢复项目。

这是 link 一些 documentation 关于托管你自己的 NuGet 包的文章。

我们进行了选举,并决定 RetroCoder 的本地 nuGet 服务器方法是正确的方法;但是他提供的文档已经过时了。

可在此处找到更好的文档:https://docs.nuget.org/create/hosting-your-own-nuget-feeds 总结:

  1. 创建空的 C# web 项目
  2. 添加包NuGet.Server
  3. 将API键添加到<appSettings>
  4. 下的web.config<add key="apiKey" value="password" />
  5. 发布网络应用程序

向其推送新包运行

nuget.exe push path\to\package.nupkg -s http://nugetserver/webapp password

为解决方案推送所有包运行

find packages -name '*.nupkg' -print0 | tr '/' '\' | xargs -0 -L 1 -I % nuget.exe push % -s http://nugetserver/webapp password