为包添加 PackageReference 失败,返回 401(未授权)

Adding PackageReference for package fails with 401 (Unauthorized)

我正在尝试将第三方 NuGet 包(例如 StyleCop)安装到项目中。该项目还有从我们自己的私有 NuGet 源安装的包。尝试安装软件包时,我们收到这样的 401 错误。

MyProject> dotnet add .\MyProject.csproj package StyleCop
  Determining projects to restore...
  Writing C:\Users\me\AppData\Local\Temp\tmp6A51.tmp
info : Adding PackageReference for package 'StyleCop' into project '.\MyProject.csproj'.
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/stylecop/index.json
info :   GET https://mediavaletsc.pkgs.visualstudio.com/_packaging/c559332f-5d8d-4d3f-8fc2-6e06125775fa/nuget/v3/registrations2-semver2/stylecop/index.json
info :   Unauthorized https://mycompany.pkgs.visualstudio.com/_packaging/xxx-xxx-xxx-xxx-xxx/nuget/v3/registrations2-semver2/stylecop/index.json 680ms
error: Response status code does not indicate success: 401 (Unauthorized).

奇怪的是,运行 dotnet restore 工作得很好,即使在 git clean -xfd 之后也是如此。我们如何配置 dotnet and/or nuget 来接受 StyleCop 或任何其他 public 软件包的安装?

我们需要使用 Visual Studio 团队服务 (VSTS) 重新进行身份验证,因为 API 密钥已过期 and/or 已被撤销。

之所以dotnet restore仍然有效,但dotnet add ... package ...失败,是因为前者使用了本地缓存,而后者命中了服务器。在我们 运行 nuget locals all -clear.

之后恢复也停止工作

要重新验证,请执行以下操作。

nuget sources remove -name $sourceName | Out-Null;
nuget sources add -name $sourceName -source $sourcePath -username $username -password $apiKey