我试图让nuget.core从VSTS使用我的PAT。
我正在配置这样的凭据:
var credentials = new NetworkCredential("packageTester", "MY_PAT_STRING");
CredentialStore.Instance.Add(new Uri("https://myFEED.pkgs.visualstudio.com/_packaging/BetaFeed/nuget/v3/index.json"), credentials);
(名称可以是documentation)
的任何内容然后查询Feed:
var repo = PackageRepositoryFactory.Default.CreateRepository( "https://myFEED.pkgs.visualstudio.com/_packaging/BetaFeed/nuget/v3/index.json");
var packages = repo.GetPackages();
它无法正常工作,我收到401错误。
关于同一主题还有另外两个问题:
对我来说都不起作用。我检查了github上的Nuget.Core
source code,看它是否使用了CredentialStore
。但是我仍然得到401并且无法弄清楚原因。
编辑:它确实有效,重建项目并没有重建所有内容。但是,URL不起作用。我明白了:
System.InvalidOperationException:'无法连接到' https://onetrueerror.pkgs.visualstudio.com/_packaging/BetaFeed/nuget/v3/index.json'指定的Feed。请验证包源(位于包管理器设置中)是否有效并确保您的网络连接。'
如果我从Feed网址中删除index.json
,我会收到以下错误:
System.Net.WebException:'远程服务器返回错误:(404)Not Found。'
答案 0 :(得分:0)
Nuget.Core似乎不支持v3的包源。 因此,正确的解决方案是:
var credentials = new NetworkCredential("packageTester", "MY_PAT_STRING_FROM_VSTS");
CredentialStore.Instance.Add(new Uri("https://YourProject.pkgs.visualstudio.com/_packaging/YourFeedName/nuget/v2/"), credentials);
这是有效的,因为Nuget.Core中的homebrewn HttpClient
在内部使用HttpWebRequest
并使用CredentialsCache
进行配置。
VSTS为您提供了一个供稿网址:
https://YourProject.pkgs.visualstudio.com/_packaging/YourFeedName/nuget/v3/index.json
将其更改为:
https://YourProject.pkgs.visualstudio.com/_packaging/YourFeedName/nuget/v2/
..当你使用Nuget.Core时。
//configure credentials
var credentials = new NetworkCredential("packageTester", "MY ");
CredentialStore.Instance.Add(new Uri("https://YourProject.pkgs.visualstudio.com/_packaging/YourFeedName/nuget/v3/"), credentials);
//download packages
var repo = PackageRepositoryFactory.Default.CreateRepository("https://YourProject.pkgs.visualstudio.com/_packaging/YourFeedName/nuget/v2/");
var packages = repo.GetPackages();