如何托管我自己的nuget v3 Feed?

时间:2015-11-09 18:45:21

标签: nuget nuget-server

我的组织为我们内部开发的软件包提供了几个nuget v2供稿(.net应用程序消耗nuget.server)并重新托管第三方软件包(因为我们的构建机器没有Internet访问权限,我们会审核开发人员在哪些软件包中使用我们的产品,如果我们没有包装,我希望这些产品失败。

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

3 个答案:

答案 0 :(得分:2)

我最近写了一个nuget服务器aspnetcore中间件。

在cource中,实现是如此愚蠢,丑陋等等...... 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

答案 1 :(得分:1)

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

简而言之,列表是

  • Visual Studio团队服务
  • MyGet
  • Inedo的ProGet
  • JFrog的Artifactory
  • NuGet Server
  • Sonatype的Nexus

我刚刚测试了ProGet,但即使它很容易安装和免费,它似乎也没有与v3同步。

我可能只要他们获得处理v3供稿的功能,就可以切换到TeamCity本机版本。

目前我正在测试可以通过

下载的NuGet Server
Install-Package NuGet.Server

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

答案 2 :(得分:1)

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

Azure DevOps Services

  

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

BaGet当前没有稳定的发行版本(2019年9月)

  

✅免费
  ✅支持符号
  with带有搜索的网站

NuGet Server

  

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

MyGet

  

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

Inedo's ProGet

  

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

JFrog's Artifactory

  

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

Sonatype's Nexus

  

❌免费
  ❌支持符号
  with带有搜索的网站

迁移脚本

$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
}
相关问题