我有一台新安装的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上进行过其他尝试,这似乎总是与此有关。有什么想法我做错了吗?
感谢您的帮助!
答案 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 中。