下载完整的nuget包,以便我可以复制到另一台机器?

时间:2013-01-15 18:17:48

标签: package build-process nuget nuget-package nuget-server

背景

我所处的计算环境利用间接互联网访问(通过虚拟机)来保障安全。

我有以下机器:

  • 桌面 - 我开发的机器;没有互联网接入。
  • 构建服务器 - 托管本地nuget供稿。也没有互联网接入。
  • Internet VM - 可以访问Internet的VM。文件可以复制到我的桌面。

问题

我有什么办法可以做到以下几点:

  • 在我的互联网虚拟机上,直接从互联网下载nuget包文件夹
    • 这是关键,也是我无法完成的步骤。
  • 将此文件夹复制到我的构建服务器的nuget目录
  • 使用我的开发机器中的构建服务器的源来引用该包。

我现在可以复制文件夹,但只能从我的开发环境中复制,这需要我在开发环境中使用nuget来下载软件包 - 我不能这样做,因为开发环境没有互联网。 / p>

提前感谢任何建议!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Nuget.Core API编写脚本。 快速执行此操作的步骤如下: 1.创建一个项目并在其中安装Nuget.Core nuget包。 这将添加对Nuget.Core程序集的引用。 3.编写一个快速方法,从指定的feed下载包:

     static string feedUrl = "https://nuget.org/api/v2";
     string packagedir = string.Empty;
     PackageManager manager = null;

        IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository(feedUrl) as IPackageRepository;
        packagedir = Path.Combine(xxx);
        manager = new PackageManager(repo, packagedir);
       manager.InstallPackage(packageId);

除了.Net45

外,您的互联网虚拟机不需要安装任何设备

答案 1 :(得分:0)

您可以使用NuGet Package Explorer下载主NuGet Feed的包,以便将其复制。

或者,您可以在互联网虚拟机上安装ProGet的实例,在默认供稿上启用包缓存,然后搜索/浏览包,并在其概述页面上选择“拉到ProGet”来放置它在Feed的存储位置。您可以在Feed管理页面上验证存储包的位置,然后将它们复制到任何您想要的位置。

如果您可以通过UNC路径(例如\\build-server\c$\ci-tool\nuget-packages)从Internet VM访问构建服务器,您可以将其设置为源存储位置,然后每次将包拉到ProGet时它都会自动可以在构建工具的私有NuGet提要中使用。