如何在Azure DevOps发布到私有NuGet源时指定API密钥?

9
我正在尝试将一个NuGet包发布到我在Azure Devops中创建的NuGet存储库中。我有这样做的经验(我曾在NuGet.org上发布),但由于某些我不理解的原因,当我尝试为我的雇主做这件事时它无法工作。
当我点击“连接到Feed”时,我看到以下解释:

enter image description here

这清楚地显示了应将我的软件包路径放在哪里,以及应将源代码放在哪里。但是它没有说明我生成的 API 密钥应该放在哪里。
但我尝试了一下,在生成软件包文件后输入了以下内容:
dotnet nuget push --source "Test" --api-key az ClassLibrary1.1.0.0.nupkg

这不起作用(401)

enter image description here

我真的不理解这个解释的一部分:“API密钥(任何字符串都可以)”。为什么可能“任何字符串都可以”?我需要一个有效的API密钥,而不是“任何字符串”。
之后,我尝试使用我有良好经验的方式发布(在nuget.org上发布公共nuget包)。在此语句中,源和密钥明确指定。
以下是我的做法:

enter image description here

也不行。我又收到了401错误。
我的API密钥应该可以让我访问(从而避免401错误),应该没问题。这是我生成API密钥的方法:

enter image description here

很可能,我指定 API 密钥的方式有问题,而不是 API 密钥本身有问题。那么,我如何在命令行语句中正确指定它以成功发布我的包?
1个回答

9

在本地推送到NuGet Feed之前,需要进行以下几个步骤:

  1. 安装Azure Artifact凭据提供程序:https://go.microsoft.com/fwlink/?linkid=2099625
  2. 运行dotnet restore --interactive,这会提示您输入凭据
  3. 运行dotnet nuget push --source "BackgroundJobs" --api-key anyapikey <package-path>

注意:您可以使用任何API密钥。


谢谢。我仍然非常惊讶,因为需要一个API密钥参数,最终可以是任何值...但确实你是对的。这个方法可行。我刚在WSL2中测试过了。 - Daan
是的,这很奇怪。微软的文档甚至表明它可以是任何东西。 - Max Morrow
1
谢谢大家,我刚刚经历了这个过程,对于其他正在经历这个过程的人,请记得在安装Azure Artifact凭据提供程序后重新启动VS(如果您正在使用它),否则它将无法识别插件。我花了2个小时才弄清楚这一点 :) - silviuc

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