[英]Detected package downgrade: Microsoft.NETCore.App from 2.1.3 to 2.1.0
我尝试将我的 .net 解决方案从 .NET Core 1.1 更新到 .NET Core 2.1。 我里面有几个 .NET 核心和 .NET 标准项目,它们相互引用并引用另一个 NuGet 包。 更新“do.net resore”和“do.net build”命令后工作正常,但是当我尝试从 visual studio 构建我的解决方案时,出现此错误:
错误 NU1605 检测到 package 降级:Microsoft.NETCore.App 从 2.1.3 到 2.1.0。 直接从项目引用 package 到 select 一个不同的版本。
我看到我的一些项目确实有 SDK 对 Microsoft.NETCore.App v2.1.0 的引用,其中一些是 v.2.1.3。 设置 RuntimeFrameworkVersion 并将此 package 添加到依赖项中显式不起作用。
我该如何处理?
UPD: do.net --info:
.NET Core SDK (reflecting any global.json): Version: 2.1.401 Commit: 91b1c13032
Runtime Environment: OS Name: Windows OS Version: 10.0.17134 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.1.401\
Host (useful for support): Version: 2.1.3 Commit: 124038c13e
.NET Core SDKs installed:
1.1.10 [C:\Program Files\dotnet\sdk]
2.0.0 [C:\Program Files\dotnet\sdk]
2.1.4 [C:\Program Files\dotnet\sdk]
2.1.100 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.401 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed: Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App
1.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 1.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
UPD:如果我从 .csproj 文件中删除此行,问题就会以某种方式消失:
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
能有关系吗?
我和你有类似的问题。 指定运行时标识符时无法发布我的项目。
我开始工作的解决方案是将以下行添加到 *.csproj
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
添加该行后,项目将正确发布。
以下链接引用了 2.1.1 和 2.1.0 之间的降级问题,但解决方案的工作原理相同。
在我的 Windows 机器上将 .net core SDK 从 .net core 2.1.0 更新到 .net core 2.2.0 后,我遇到了同样的问题。 我无法构建项目,并在检测到包降级时出现构建错误:Microsoft.AspNetCore.Razor.Design 从 2.2.0 到 2.1.0。
我已经通过更新 Microsoft.AspNetCore.Razor.Design 的 nuget 包解决了这个问题
在添加对MySQL.Data
的引用后,我刚刚遇到了同样的问题。
唯一的解决方案是在 .csproj 文件中明确定义受影响引用的版本:
<PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" />
<PackageReference Include="System.Runtime.Extensions" Version="4.3.0" />
<PackageReference Include="System.Globalization" Version="4.3.0" />
<PackageReference Include="System.Threading" Version="4.3.0" />
<PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
我也有这个问题。 最终为我修复的是从“程序”控制面板卸载 .NET SDK 2.1.3。 或者我基本上不得不卸载我的项目试图使用的任何更高版本的相关 SDK 库。
我的这个问题版本(我认为)是由安装在 Jenkins 构建服务器上的实际 .NET Core 版本与具有模糊引用的单元测试项目的组合引起的。
我知道,在理想的世界中,dotnet 不希望在 csproj 中声明 AspNetCore 的版本 - 在构建过程中提供最大的灵活性:
<PackageReference Include="Microsoft.AspNetCore.App" />
但是,在构建服务器上编译主项目时(第一次),它选择使用 2.1.6 作为 AspNetCore 版本。 然后它尝试编译测试项目,并且该项目的最低版本为“2.1.1”,因此构建过程会尝试降级,然后在构建失败时中止构建。
我从测试项目中删除了“2.1.1”最低版本,但随后测试项目不会在本地构建,因为它无法明确解决依赖关系。 在多次 NuGet 包升级/降级之后没有任何乐趣,所以选择强制“2.1.6”最低版本以便与构建服务器保持一致。
这仍然无法在本地正确解析所有依赖项,最终也强制使用 NetCore 的最低版本:
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.6" />
<PackageReference Include="Microsoft.NetCore.App" Version="2.1.6" />
现在一切都在本地和 Jenkins 构建服务器上构建!
安装新版本的 .Net Core(2.0 到 2.1)后,我也遇到了这个问题。 下面的链接给了我一个导致问题的提示。
https://github.com/dotnet/cli/issues/9433
我的解决方案是将项目的目标框架更改为最新安装的 .Net Core 版本。
Project Properties > Application > Target Framework
对于未来的读者。
一大早,我的代码就在构建中。
然后我开始收到此错误:
Error NU1605 Detected package downgrade: Microsoft.Extensions.Logging from 3.1.1 to 2.1.1. Reference the package directly from the project to select a different version.
我在 2 个程序集 csprojs 上得到了它。
MyCompany.MyProject.SomeLibraryONE
MyCompany.MyProject.SomeLibraryTWO
所以当然,我开始追踪“Microsoft.Extensions.Logging”。
但后来我想起了“今天早上它起作用了”,我回溯了我的变化。
我发现了一个新包(nuget import)添加进来
MyCompany.MyProject.SomeLibraryTHREE
(一和二引用了三)
这是“新”行:
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.1" />
所以我看了又看,但这是导入“Microsoft.Extensions.Http”包的唯一地方。
做什么?
从记忆中,我只是记得我有很多“3.1.0”包导入,但没有 3.1.1。
其他包导入的示例(例如):
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" />
长话短说………………我更改了新的包导入(新导入是我的代码损坏的主要嫌疑人)……并将其更改为与“3.1 .0 世界”。
所以我现在有了这个。
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.0" />
现在一切正常。
因此,(实际)错误可能是实际发生的事情的红鲱鱼。
希望您正在使用源代码控制,并且可以“反向”执行它。
只是为了完成这个......这是奇怪的部分:
\.nuget\packages\microsoft.extensions.http\3.1.1\lib\netcoreapp3.1\Microsoft.Extensions.Http.dll
我打开了这个文件。
它引用了
// Microsoft.Extensions.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Assembly reference loading information:
// Info: Success - Loading from: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.0\Microsoft.Extensions.Logging.dll
不是,它是“3.1.0\\Microsoft.Extensions.Logging.dll”。 那么它是什么破东西???? (谁知道?)
所以虽然这对我来说没有意义..............我上面展示的确实解决了这个问题。
去搞清楚。
希望能帮助某人。
我在 .NET 5 上,看起来这个错误仍然存在。
问题:无法将 EntityFramework 包从 5.0.5 更新到 5.0.8。
使固定:
我发现的一种快速解决方法是从“解决方案”>“引用”>“包”中删除所选包(在我的情况下为 5.0.5 版)的所有包引用。 右键单击并删除每个。
现在转到 nuget 包管理器并再次添加这些相同的包(现在版本将是 5.0.8)。
建造
我有一个非常相似的错误,解决方案是将其添加到 my.csproj
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
</ItemGroup>
我尝试了2.1.1的版本,它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.