Nuget还原失败,提示身份验证问题

4
当我迁移到我的Linux机器上工作时,我遇到了Nuget的问题。我们的项目是.net core 3.1,并且每个项目都有自己的nuget.config文件,其中包含四个软件包源。第一个是显而易见的,但其余的是特定于公司的。
每次构建时,我都会收到未经授权的错误提示:
/usr/share/dotnet/sdk/3.1.301/NuGet.targets(128,5): error : Unable to load the service index for source https://aldinternational.pkgs.visualstudio.com/_packaging/PLASMA/nuget/v3/index.json. [/home/lg/Documents/ALD/repo/CampaignIngestion.OmegaConnector/OmegaConnector.Functions/OmegaConnector.Functions.csproj] /usr/share/dotnet/sdk/3.1.301/NuGet.targets(128,5): error : Response status code does not indicate success: 401 (Unauthorized). [/home/lg/Documents/ALD/repo/CampaignIngestion.OmegaConnector/OmegaConnector.Functions/OmegaConnector.Functions.csproj] 0 Warning(s) 1 Error(s)
但是当我在浏览器中输入时,可以获得JSON输出。 我已经运行了以下命令:

mozroots --import --sync --url https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt

我发现这个线程似乎有类似的问题,但对于我来说没有用。
dotnet --info output

.NET Core SDK (reflecting any global.json):
 Version:   3.1.301
 Commit:    7feb845744

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-x64
 Base Path:   /usr/share/dotnet/sdk/3.1.301/

Host (useful for support):
  Version: 3.1.5
  Commit:  65cd789777

.NET Core SDKs installed:
  2.1.302 [/usr/share/dotnet/sdk]
  2.2.300 [/usr/share/dotnet/sdk]
  3.1.301 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

构建明确地使用正确的 nuget.config 文件,而不是使用我的本地配置文件。我该如何解决这个问题?
我认为我已经从 key="nuget.org" value="https://api.nuget.org/v3/index.json" 下载了所有的包,因为它是列表中的第一个。
1个回答

10

这一切都归结于将正确的packageSourceCredentials添加到正确的nuget配置文件中。我有以下几个配置文件:

  1. ~/.config/NuGet/nuget.config
  2. ~/.nuget/NuGet/nuget.config
  3. 解决方案级别的nuget.config文件

不要使用第三个,因为它会将用户设置放在解决方案级别,并且会被提交。当我从项目文件夹运行“dotnet build”时,第一个似乎没有任何影响。#2是需要设置凭据的文件(对我来说是这样)。

接下来的问题是,我们在私有仓库上设置了PAT代码访问权限,但非 Windows 平台不支持加密,但是只放置明文密码也不好。我需要做的是:

  1. 使用我的帐户登录 VSTS 并生成 PAT 代码
  2. 在#2 nuget 配置文件中创建 PackageSourceCredentials 部分
  3. 对于每个需要凭据的仓库,在 PackageSourceCredentials 部分中创建其名称的部分 即对于

<add key="PLASMA" value="" protocolVersion="3" />

(PLASMA 在我们的第三个nuget.config文件中定义)

<PLASMA>
      <add key="Username" value="your username for PAT code" />
      <add key="ClearTextPassword" value="Copied PAT code from vsts" />
</PLASMA>

如果你只使用密码而不是明文密码,它似乎无法工作,并且“复制的PAT代码”是你从VSTS复制出来的代码。似乎并不重要的是,我需要凭据的软件包源在#3配置文件中定义,而它们的凭据在#2配置文件中定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接