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

问题描述 投票:0回答:5

我在尝试使用 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\a\2921\s\src\StorageRegistryPortal\StorageRegistryPortal.csproj...

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

我已经尝试将“使用 Nuget 4.9.3”任务添加到构建管道,但我得到了同样的错误。

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

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

azure asp.net-core azure-devops nuget azure-deployment
5个回答
5
投票

TL;博士

从私有 Azure DevOps Artifacts/Packages NuGet 存储库中提取时,在我的一个 Linux/Ubuntu 构建服务器上运行

dotnet restore
时,有时会发生这种情况。

对我有用的解决方案:

  1. 重启 Linux 机器,或者
  2. 在 ~/.local/share/NuGet/v3-cache/[directory-with-name-of-my-private-nuget-repo] 删除 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. 我可以在同一台 Linux 机器上运行
    dotnet restore
    其他(旧)版本,这很好

似乎

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

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


3
投票

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


1
投票

您能否尝试使用 Nuget 4.9.1 作为屏幕截图,然后再次运行您的构建?

希望有帮助。


0
投票

尝试从这里https://www.nuget.org/downloads下载更高版本的Nuget.Framework。 就我而言,这是 5.0.0 版的问题,我安装了 5.0.2,然后错误消失了。


0
投票

首先尝试这个很容易

我们也使用内部 NuGet 服务器,但我认为这不是本例的问题。

我有一个用 0.8.3、0.9.0 和 0.9.1 版本制作的包。每个版本中确实有一些重大更改。所以代码没有编译。我在 0.9.1.

 上遇到错误
NU1102 Unable to find package...

我回到 0.8.3,然后又回到 0.9.1,终于成功了。 (我正在编辑 csproj 文件 PackageReference,Version)

我怀疑是编译错误弄乱了 nuget。

© www.soinside.com 2019 - 2024. All rights reserved.