使用.NET CLI将NuGet包推送到VSTS

8

我正在尝试将一个NuGet包发布到私有的VSTS feed。我想要使用.NET CLI实现这一目标,而不创建或修改nuget.config文件。

我已经尝试过:

dotnet nuget push <PackageName> --source https://XXX.pkgs.visualstudio.com/_packaging/YYY/nuget/v3/index.json --api-key <VSTS UserName>:<PersonalAccessToken>

I get:

error: Unable to load the service index for source https://XXX.pkgs.visualstudio.com/_packaging/YYY/nuget/v3/index.json.
error: Response status code does not indicate success: 401 (Unauthorized).

我可以在 Fiddler 中看到 .NET CLI 仅向 https://XXX.pkgs.visualstudio.com/_packaging/YYY/nuget/v3/index.json 发送 GET 请求,没有任何授权令牌。该请求以 401 结束。

1个回答

16

应在 NuGet.config 文件中添加 NuGet 包凭据和 API 密钥。

因此,在使用 dotnet nuget push 命令之前,您应按以下两个命令将凭据和 API 密钥添加到 NuGet.config 中:

nuget sources Add -Name "mysource" -Source "https://XXX.pkgs.visualstudio.com/_packaging/YYY/nuget/v3/index.json" -username name -password PAT
nuget setapikey mykey -source mysource

然后通过dotnet nuget push命令推送NuGet包:

dotnet nuget push packagename.nupkg --source mysource --api-key mykey

1
谢谢。我正在寻找一个选项: a)不需要将密钥存储在NuGet配置中,因为我想将文件检入存储库 b)不需要nuget.exe 但我猜这似乎无法实现(尚未?) - Jakub Binkowski
5
请注意,在推送到 VSTS 包管理时,您将不需要使用 setapikey 行或 --api-key 参数。否则,答案是正确的。如果需要,您可以手动构建一个 NuGet.config 文件,而无需使用 nuget.exe。这里有一个参考链接可以帮助您:https://learn.microsoft.com/en-us/nuget/schema/nuget-config-file#package-source-sections - Alex Mullans
2
你使用了 mykeyPAT。我猜它们不代表同一个值。那么我该如何生成这个 mykey - Andre Soares
1
@Andre Soares:是的,mykey和PAT并不代表相同的值:“NuGet客户端的push命令需要一个API密钥。[使用VSTS包服务器]您可以使用任何非空字符串”。来源:https://learn.microsoft.com/en-us/vsts/package/nuget/publish?view=vsts - KimCM
我相信微软那些糟糕的VSTS任务都不适用于NuGet。无论我们尝试哪种方法,都会出现问题。 - christopher clark
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接