【问题标题】:How do I host my own nuget v3 feed?如何托管我自己的 nuget v3 提要?
【发布时间】:2016-02-10 12:06:48
【问题描述】:

我的组织有几个 nuget v2 提要(.net 应用程序消耗 nuget.server),用于我们内部开发的包和重新托管第三方包(因为我们的构建机器无法访问互联网,我们会审核开发人员在其中使用的包我们的产品,如果我们没有软件包,我们希望构建失败)。

每当我将任何需要 nuget 客户端 3.0+ 的包添加到我的 nuget 服务器时,nuget 服务器都会崩溃,因为它无法从这些包中读取元数据。如何托管我自己的 nuget v3 服务器/升级我现有的 nuget 服务器以兼容 v3?

【问题讨论】:

    标签: nuget nuget-server


    【解决方案1】:

    我查看了一些产品,我最喜欢的是 Azure DevOps Services

    Azure DevOps Services

    ✅ 免费(包括 2GB 存储空间)
    ✅ 支持符号
    ✅ 有搜索功能的网站

    BaGet 目前没有稳定的发布版本可用(2019 年 9 月)

    ✅免费
    ✅ 支持符号
    ✅ 有搜索功能的网站

    NuGet Server

    ✅免费
    ❌ 支持符号
    ❌ 带有搜索功能的网站

    MyGet

    ❌免费
    ✅ 支持符号
    ✅ 有搜索功能的网站

    Inedo's ProGet

    ❌免费
    ✅ 支持符号
    ✅ 有搜索功能的网站

    JFrog's Artifactory

    ❌免费
    ✅ 支持符号
    ✅ 有搜索功能的网站

    Sonatype's Nexus

    ❌免费
    ❌ 支持符号
    ✅ 有搜索功能的网站

    迁移脚本

    $source = "http://oldnuget-server.mydomain.com/nuget"
    $destination = "https://pkgs.dev.azure.com/MYCOMPANY/_packaging/MYCOMPANY/nuget/v3/index.json"
    
    (& .\nuget.exe list -AllVersions -Source $source).Split([Environment]::NewLine) | % {
      $id = $_.Split(" ")[0].Trim()
      $version = $_.Split(" ")[1].Trim()
    
      $path = [IO.Path]::Combine("Packages", $id, $version, "${id}.${version}.nupkg")
    
      Write-Host "nuget.exe push -Source $destination ""$path"""
      & .\nuget.exe push -Source $destination $path -ApiKey XXXX-XXXXX
    }
    

    【讨论】:

      【解决方案2】:

      我最近写了一个nuget server aspnetcore中间件。

      当然,实现是如此愚蠢,丑陋等等...... link

      您可以在 Startup.cs 中设置它

      public void ConfigureServices( IServiceCollection services )
      {
          ...
          services.AddNugetServer(opt=>
          {
              opt.ApiKey = "This is a string used for adds or deletes your package(s)";
              opt.PackageDirectory = "/path/to/your/packages"; //default is current path + "/packages"
          });
          ...
      }
      
      public void Configure( IApplicationBuilder app, IHostingEnvironment env )
      {
          ...
          app.UseNugetServer();
      }
      

      然后访问 http(s)://your-server-address[:port]/v3/index.json

      出版:

      dotnet nuget push -s http(s)://your-server-address[:port]/v3/package package.nupkg
      

      【讨论】:

        【解决方案3】:

        我也遇到了同样的问题,并且做了一些研究。您可能已经解决了您的问题,但 NuGet 自己在这里列出了一些可供研究的替代方案;免费和付费: Hosting Your Own NuGet Feeds

        简而言之,列表是

        • Visual Studio 团队服务
        • 我的获取
        • Inedo 的 ProGet
        • JFrog 的神器
        • NuGet 服务器
        • Sonatype 的 Nexus

        我刚刚测试了 ProGet,但它似乎不是最新的 v3,即使它易于安装和免费。

        一旦他们获得处理 v3 提要的功能,我可能会切换到 TeamCity 本地版本。

        目前我正在测试可以通过包下载的 NuGet Server

        Install-Package NuGet.Server
        

        在 Visual Studio 的 Package-Manager 中,在 .Net 4.5.x 的新的空 Web 应用程序中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-11
          • 1970-01-01
          • 1970-01-01
          • 2013-03-11
          • 2021-01-09
          相关资源
          最近更新 更多