错误 NU1102:无法找到版本为 (>= 4.9.3) 的包 NuGet.Frameworks

error NU1102: Unable to find package NuGet.Frameworks with version (>= 4.9.3)

我在尝试使用 Azure DevOps 构建 .NET Core 解决方案时遇到此错误:

error NU1102:  Unable to find package NuGet Frameworks with version (>= 4.9.3)
error NU1102:   - Found 33 version(s) in http://nuget.bentley.com/nuget/Default [ Nearest version: 4.7.0-preview1-4986 ]

当 dotnet.exe CLI 执行 NuGet 恢复时,Cake 脚本中出现错误:

Executing: "d:/vsts/a/_tool/dncs/2.2.100/x64/dotnet.exe" restore "./src/StorageRegistryPortal.sln" --source "http://nuget.bentley.com/nuget/Default"

在抛出上面的 NU1102 错误之前,它会尝试从解决方案文件中恢复 NuGet 包:

 Restoring packages for d:\vsts\a21\s\src\StorageRegistryPortal\StorageRegistryPortal.csproj...

我的解决方案中没有任何内容引用此 "NuGet.Frameworks" 包。所以,我想知道是不是 "dotnet.exe" CLI 本身依赖于这个 nuget 包,然后才能恢复其余的 NuGet 包。此外,这只发生在 AzureDevops 中。当我在本地 PC 上执行 build/cake 脚本时,它能够毫无问题地成功恢复所有 nuget 包。

我已经尝试将 "Use Nuget 4.9.3" 任务添加到构建管道,但我遇到了同样的错误。

注意:如果我删除那个 "Use Nuget 4.9.3" 任务,则错误会更改为 (>= 4.7.0)。因此,它似乎在寻找与 nuget.exe 当前版本相匹配的 Nuget.Framework 但没有找到它。

这是我的构建管道设置的屏幕截图:

能否请您尝试使用 Nuget 4.9.1 作为屏幕截图,然后 运行 重新构建?

希望对您有所帮助。

我终于能够解决这个问题。事实证明,nuget.org 人员进行了重大更改,导致我们的内部 nuget 服务器无法为 NuGet.Frameworks 的 4.7 和 4.9.3 版本提供服务。这是一个必不可少的 nuget 库,dotnet.exe 需要它来恢复 nuget 包。对于 .net 核心项目,该框架需要为 4.7 或更高版本。无论如何,解决方案是我们必须对我们的内部 nuget 服务器进行调整以解决 nuget.org.

的变化。

TL;DR

当从私有 Azure DevOps Artifacts/Packages NuGet 存储库拉取时,在我的 Linux/Ubuntu 构建服务器之一上 运行ning dotnet restore 时,有时会发生这种情况。

适合我的解决方案:

  1. 重新启动 Linux 机器,或
  2. 正在删除位于 ~/.local/share/NuGet/v3-cache/[directory-with-name-of-my-private-nuget-repo]
  3. 的 NuGet 缓存

背景

我得到的错误是:

error NU1102: Unable to find package [Name-of-my-custom-nuget-package] with version (>= 5.0.116)

我有一个 nuget.config 文件,该文件已正确配置以下载我的 NuGet 程序包。

这个错误完全是胡说八道。

  1. 版本存在
  2. 其他Linux盒子没有问题运行宁dotnet restore和获取包的版本
  3. 我可以 运行 dotnet restore 在同一台 Linux 机器上用于其他(旧)版本并且没问题

似乎 dotnet restore 决定,无论出于何种原因,它甚至不会尝试寻找新版本的软件包。

我通常发现使用 AAD 保护的 Azure DevOps 私有 NuGet 存储库在处理 Linux 时特别有问题和烦人。它确实需要 NuGet 团队的关爱和关注。