如何托管我自己的 nuget v3 提要?
How do I host my own nuget v3 feed?
我的组织有几个 nuget v2 提要(.net 应用程序消耗 nuget.server)用于我们内部开发的包和重新托管第三方包(因为我们的构建机器没有互联网访问权限,我们审计什么开发人员在我们的产品中使用的包,如果我们没有包,他们希望构建失败)。
每当我将任何需要 nuget 客户端 3.0+ 的包添加到我的 nuget 服务器时,nuget 服务器就会崩溃,因为它无法从这些包中读取元数据。我如何托管我自己的 nuget v3 服务器/将我现有的 nuget 服务器升级为与 v3 兼容?
我遇到了同样的问题,并且做了一些研究。您可能已经解决了您的问题,但这里 NuGet 自己列出了一些可供研究的备选方案;免费和付费:
Hosting Your Own NuGet Feeds
简而言之,列表是
- Visual Studio 团队服务
- MyGet
- Inedo 的 ProGet
- JFrog 的 Artifactory
- NuGet 服务器
- Sonatype 的 Nexus
我刚刚测试了 ProGet,但它似乎不是最新的 v3,即使它很容易安装和免费。
一旦他们获得处理 v3 提要的功能,我可能会切换到 TeamCity 本机。
目前我正在测试可以通过
作为包下载的 NuGet 服务器
Install-Package NuGet.Server
在 Visual Studio 的包管理器中,在 .Net 4 的新的空 Web 应用程序中。5.x。
最近写了一个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
我检查了一些产品,我最喜欢的是 Azure DevOps Services。
✅ free (2GB Storage included)
✅ support symbols
✅ website with a search
BaGet 目前没有可用的稳定版本(2019 年 9 月)
✅ free
✅ support symbols
✅ website with a search
✅ free
❌ support symbols
❌ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
❌ support symbols
✅ website with a search
迁移脚本
$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
}
我的组织有几个 nuget v2 提要(.net 应用程序消耗 nuget.server)用于我们内部开发的包和重新托管第三方包(因为我们的构建机器没有互联网访问权限,我们审计什么开发人员在我们的产品中使用的包,如果我们没有包,他们希望构建失败)。
每当我将任何需要 nuget 客户端 3.0+ 的包添加到我的 nuget 服务器时,nuget 服务器就会崩溃,因为它无法从这些包中读取元数据。我如何托管我自己的 nuget v3 服务器/将我现有的 nuget 服务器升级为与 v3 兼容?
我遇到了同样的问题,并且做了一些研究。您可能已经解决了您的问题,但这里 NuGet 自己列出了一些可供研究的备选方案;免费和付费: Hosting Your Own NuGet Feeds
简而言之,列表是
- Visual Studio 团队服务
- MyGet
- Inedo 的 ProGet
- JFrog 的 Artifactory
- NuGet 服务器
- Sonatype 的 Nexus
我刚刚测试了 ProGet,但它似乎不是最新的 v3,即使它很容易安装和免费。
一旦他们获得处理 v3 提要的功能,我可能会切换到 TeamCity 本机。
目前我正在测试可以通过
作为包下载的 NuGet 服务器Install-Package NuGet.Server
在 Visual Studio 的包管理器中,在 .Net 4 的新的空 Web 应用程序中。5.x。
最近写了一个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
我检查了一些产品,我最喜欢的是 Azure DevOps Services。
✅ free (2GB Storage included)
✅ support symbols
✅ website with a search
BaGet 目前没有可用的稳定版本(2019 年 9 月)
✅ free
✅ support symbols
✅ website with a search
✅ free
❌ support symbols
❌ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
✅ support symbols
✅ website with a search
❌ free
❌ support symbols
✅ website with a search
迁移脚本
$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
}