nuget凭证如何判断正在使用哪个提供者?

nuget credentials how to tell which provider is being used?

因此,出于“安全”原因,我不得不使用与 运行 visual studio 不同的帐户来进行某些管理员级别的操作(主要是注册 COM 对象)。然而,TFS 只知道我的较低级别的常规帐户。过去这不是问题,我已经为我的管理员帐户设置凭据以使用常规帐户登录 TFS。

但是,自从我上次更改密码并从 VS2019 运行 登录到一个特定的 nuget 提要(由内部 TFS / Azure devops 服务器托管)以来,情况发生了变化,因为管理员将锁定我的 AD 帐户。另外,我的 git TFS 帐户似乎没有使用正确的帐户。由同一 TFS 实例托管的不同提要(唯一的区别是提要名称)工作正常。

我尝试使用 dotnet nuget update source name -u username -p password 为 nuget 设置凭据,但没有帮助。我怀疑因为 git 在我推送到 TFS 服务器时出现问题,它使用某种 windows 存储的用户名和密码,而 nuget 使用相同的无效凭据。我可以登录到 TFS 以在 VS2019 中搜索工作项以添加 git 提交,因此至少正确设置了一个提供程序。

所以我的问题是如何找出用于特定 nuget 提要的实际用户名和凭据类型/提供者?理想情况下,我还想找出它使用的用户名。

请首先确保您登录的帐户具有 nuget 包的权限。

how do I find out what the actual username and credential type / provider is being used for a particular nuget feed?

您应该在我的本地文件夹中找到 CredentialProvider:

C:\Users\[username]\AppData\Local\NuGet\CredentialProviders\

Use NuGet with Azure DevOps Services feeds

也试试下面的解决方案,检查是否有效:

  1. 在解决方案资源管理器中右键单击您的解决方案

  2. 管理解决方案的 NuGet 包-> 在右上角单击齿轮符号 -> 在左侧转到 NuGet 包管理器

  3. 包源 -> 在右侧未选中您遇到问题的包源

  4. 单击“确定”按钮 -> 重新启动你的 VS 它应该只要求你登录一次 现在

.

好的,在我的例子中,事实证明正在使用不同版本的 nuget。 CredentialProviders 文件夹为空。

但是我怀疑在这个配置文件中涉及旧版本的 nuget C:\Users\<your_account>\AppData\Roaming\NuGet\NuGet.Config 在我的例子中,它有两次相同的存储库名称,但大小写略有不同(不知道为什么?)并且其中一个条目的密码不正确(它们应该都是相同的)。

所以 运行 nuget.exe sources update 对于旧机制以及 dotnet nuget update source 有效。我还注意到 update source 需要的 dotnet sdk 版本比我在 global.json 中为该项目指定的要晚。

所以我怀疑这主要是因为

  • 我的机器上有多个版本的 nuget 以及正在使用的有点老的 dotnet sdk。
  • nuget 仓库同名只是大小写不同

我希望这在某些时候对其他人有所帮助。

我已将 Patrick Lu 的回答标记为正确,因为它实际上回答了我原来的问题。