如何在没有互联网的构建服务器/生产服务器上使用NuGet包?

Sea*_*een 6 cruisecontrol.net msbuild asp.net-mvc continuous-integration nuget

背景

我有以下组件:

  • 我的本地解决方案(.NET 4.5)使用NuGet包.
  • 我的解决方案中的PowerShell构建脚本,其目标是构建,运行单元测试,Web.config转换等.
  • 没有连接互联网的构建服务器运行CruiseControl.NET,调用我的构建脚本来构建文件.它还可以作为开发构建的(IIS7)环境.
  • IIS7的生产服务器,无法访问Internet.

目标

我想从我的解决方案中利用NuGet包,并将它们作为源的一部分存储在本地 - 而不必依赖我的构建和生产服务器上的互联网连接或nuget包服务器.

  • 如何告诉MSBuild正确部署这些软件包,或者这是NuGet的默认行为?

Jas*_*Cav 9

Scott Hanselman撰写了一篇很棒的文章,题目是当NuGet.org关闭时(或者你在飞机上)如何访问NuGet.如果你仔细阅读这篇文章,你最后会看到他提出的建议主要是临时类型的解决方案,并且他不断说你除了那些紧急情况外你永远不需要离线缓存.

但是,如果你在他的文章的底部阅读,他提出这个建议:

如果您担心公司范围内的外部依赖关系,您可能希望在组织内拥有一个包含您依赖的NuGet包的网络共享(可能在共享构建器服务器上).如果您作为一个组织处于低带宽状态,这是一个有用的事情.

这就是我在类似情况下最终做的事情.我们有一个共享,我们保持与我们依赖的各种软件包的最新版本(当然,我假设你在某种类型的网络).它运行良好,只需要一点点工作就可以半定期更新软件包(我们有一个季度更新周期).

另一篇也可能对你有帮助的文章(对我而言)是:使用NuGet分发我们公司的内部DLL