如何解决nuget凭证如何得知正在使用哪个提供程序?
因此出于“安全性”的原因,我被迫使用其他帐户来运行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 commit,因此至少已正确设置了一个提供程序。
所以我的问题是我如何找出特定的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
也可以尝试以下解决方案,检查是否可以解决问题:
-
从解决方案资源管理器中右键单击您的解决方案
-
为解决方案管理Nuget软件包->右上角单击齿轮符号->左侧转到NuGet软件包管理器
-
包来源->右侧,取消选中您遇到问题的包来源
-
单击“确定”按钮->重新启动VS,它只要求您登录一次 现在
。
,好吧,我发现使用了不同版本的nuget。 CredentialProviders文件夹为空。
但是我怀疑其中包含了较旧版本的nuget,该版本在此配置文件中显示
C:\Users\<your_account>\AppData\Roaming\NuGet\NuGet.Config
,在我的情况下,两次具有相同的存储库名称,但大小写略有不同(不知道为什么?),并且其中一个条目的密码不正确(它们都应该相同)。
因此,对于较旧的机制以及nuget.exe sources update
运行dotnet nuget update source
都是可行的。我还注意到,update source
需要比我在global.json
中为该项目指定的更高版本的dotnet sdk。
所以我怀疑这主要归结于
- 我的机器上有多个版本的nuget以及正在使用的老式dotnet sdk。
- 具有相同名称的nuget存储库只是大小写不同
我希望这会在某些时候对别人有所帮助。
我将Patrick Lu的答案标记为正确,因为它实际上回答了我的原始问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。