Nuget 恢复因身份验证失败

one*_*rth 4 c# nuget-package-restore .net-core

在迁移到我的 Linux 机器上工作时,我遇到了 Nuget 的问题。我们的项目是 .net core 3.1,每个项目都有自己的 nuget.config 文件,其中有四个包源。第一个是显而易见的,但其余的都是针对公司的。

\n

每当我构建时,我都会收到一条错误消息,指出我未获得授权:

\n

/usr/share/dotnet/sdk/3.1.301/NuGet.targets(128,5):错误:无法加载源https://aldinternational.pkgs.visualstudio.com/_packaging/PLASMA/nuget/的服务索引v3/index.json。[/home/lg/Documents/ALD/repo/CampaignIngestion.OmegaConnector/OmegaConnector.Functions/OmegaConnector.Functions.csproj]\n/usr/share/dotnet/sdk/3.1.301/NuGet.targets(128,5):错误:响应状态代码不表示成功:401(未经授权)。[/home/lg/Documents/ALD/repo/CampaignIngestion.OmegaConnector/OmegaConnector.Functions/OmegaConnector.Functions.csproj]\n0 警告\n1 错误

\n

但当我将其放入浏览器中时,我可以获得 json 输出。我跑了:

\n

mozroots --import --sync --url https://hg.mozilla.org/mozilla-central/raw-file/tip/security\xe2\x80\x8c\xe2\x80\x8b/nss/lib/ckfw/内置\xe2\x80\x8c\xe2\x80\x8bns/certdata.txt

\n

因为我发现它的线程似乎有类似的问题,但对我来说没有运气。

\n
dotnet --info output\n\n.NET Core SDK (reflecting any global.json):\n Version:   3.1.301\n Commit:    7feb845744\n\nRuntime Environment:\n OS Name:     ubuntu\n OS Version:  18.04\n OS Platform: Linux\n RID:         ubuntu.18.04-x64\n Base Path:   /usr/share/dotnet/sdk/3.1.301/\n\nHost (useful for support):\n  Version: 3.1.5\n  Commit:  65cd789777\n\n.NET Core SDKs installed:\n  2.1.302 [/usr/share/dotnet/sdk]\n  2.2.300 [/usr/share/dotnet/sdk]\n  3.1.301 [/usr/share/dotnet/sdk]\n\n.NET Core runtimes installed:\n  Microsoft.AspNetCore.All 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]\n  Microsoft.AspNetCore.All 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]\n  Microsoft.AspNetCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]\n  Microsoft.AspNetCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]\n  Microsoft.AspNetCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]\n  Microsoft.NETCore.App 2.1.2 [/usr/share/dotnet/shared/Microsoft.NETCore.App]\n  Microsoft.NETCore.App 2.2.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]\n  Microsoft.NETCore.App 3.1.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]\n\nTo install additional .NET Core runtimes or SDKs:\n  https://aka.ms/dotnet-download\n
Run Code Online (Sandbox Code Playgroud)\n

构建肯定会命中正确的 nuget.config 并且没有使用我的本地使用配置。我该如何解决这个问题?

\n

我下载了 key="nuget.org" value="https://api.nuget.org/v3/index.json" 中的所有软件包,因为我认为它是列表中的第一个。

\n

one*_*rth 10

这一切都归结为将正确的 packageSourceCredentials 添加到正确的 nuget.config 文件中。我有

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

不要为此使用#3,因为这会将用户设置在解决方案级别并提交。当我从项目文件夹中执行“dotnet build”时,#1 似乎没有任何影响。#2 是需要设置凭据的文件(无论如何对我来说)。

下一个问题是,我们在私有存储库上设置了 PAT 代码访问权限,但非 Windows 平台不支持加密,但仅放置明文密码也没有什么好处。我需要做的是:

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

<添加键=“PLASMA”值=“”协议版本=“3”/>

(PLASMA 在我们设置的 #3 nuget.config 文件中定义)

<PLASMA>
      <add key="Username" value="your username for PAT code" />
      <add key="ClearTextPassword" value="Copied PAT code from vsts" />
</PLASMA>
Run Code Online (Sandbox Code Playgroud)

如果您只是使用密码而不是 ClearTextPassword,它似乎不起作用,并且“复制的 PAT 代码”是您从 vsts 中复制的代码。我需要凭据的包源在 #3 配置文件中定义,并且它们的凭据在 #2 配置文件中定义,这似乎并不重要。