“ dotnet还原-交互式”不适用于Azure Artifacts

时间:2019-10-29 09:42:25

标签: azure-devops nuget

我有一台新安装的Windows 10计算机,具有.NET Core SDK 3.0.100。我有一个项目,该项目的nuget.config文件包含(除其他参考外)对Azure Artifacts nuget提要的引用,我想以交互方式访问此提要的凭据。值得指出的是,我想使用命令行来实现这一目标。我选择的IDE是Jetbrains Rider,而不是Visual Studio(对于这个特定问题,我不确定那不是很重要)。

我已经通过运行powershell命令(Invoke-WebRequest ...)下载了Azure Artifacts Credential Provider,并成功安装了它。现在,我的计算机上有了一个nuget插件,该插件应该可以帮助我检索有关天蓝色工件提要的凭据。

我期望的工作是运行dotnet restore --interactive会提示我输入凭据,但事实并非如此。它根本不提示,只是抱怨说找不到包。

我也曾与同事在MacOS和Windows上进行过其他尝试,这似乎总是与此有关。有什么想法我做错了吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

我会回答我自己的问题,因为这可能会对其他人有所帮助。

当我尝试dotnet restore --configfile .\.nuget\NuGet.Config --interactive时,它 did 提示我。我可以登录,一切正常!

我不确定为什么,但是似乎仅运行dotnet restore --interactive并没有选择正确的nuget源-或至少不是我在.\.nuget\NuGet.Config中定义的源本地项目。因此,凭证提供者(显然)不会提示我任何事情。对于这是预期的行为还是错误,我尚未找到任何详细信息。

答案 1 :(得分:1)

如果您在将 dotnet restore --interactive 文件添加到项目时无法立即使用 nuget.config,还有另一种选择。

您可以清除所有 nuget 本地缓存。

最简单的方法是使用以下命令:

dotnet nuget locals all --clear

一段时间后,清除所有缓存后,您可以再次运行 dotnet restore --interactive,希望 Azure Artifacts 凭据提供程序会向您显示通过设备代码进行身份验证的说明。

答案 2 :(得分:1)

使用 @Robson Rocha 发布的关于清除所有 nuget 本地缓存的选项,我可以获得凭据说明,但在身份验证后我仍然收到错误:

warn : The plugin credential provider could not acquire credentials. ...
error: Response status code does not indicate success: 401 (Unauthorized).

我在我的 Windows 开发环境 creating an Azure Personal Access Token 中解决了这个问题,权限为“范围:自定义定义,打包:读取”并将其设置在 >%AppData% Nuget 文件夹:

C:\Users\{UserName}\AppData\Roaming\NuGet\NuGet.Config

nuget.config reference - packageSourceCredentials

<packageSourceCredentials>
  <MyPackageSourceKey>
    <add key="Username" value="myUserName" />
    <add key="ClearTextPassword" value="TheAzurePersonalAccessToken" />
  </MyPackageSourceKey>
</packageSourceCredentials>

因为 %AppData% Nuget 文件夹是针对每个用户的,并且它在 repo 文件夹之外,所以每个用户的凭据都是安全的,我们避免将它们提交到 repo 中。