修复错误NU1605的正确方法是什么:检测到包降级 - log4net

pab*_*blo 29 .net-core

你这样做:

dotnet new console
dotnet add-package log4net --version 2.0.8
dotnet publish -r win10-x64
Run Code Online (Sandbox Code Playgroud)

然后你得到:

error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0.
Run Code Online (Sandbox Code Playgroud)

您可以修复它,将以下内容添加到PropertyGroup下的csproj中

<NoWarn>$(NoWarn);NU1605</NoWarn>
Run Code Online (Sandbox Code Playgroud)

但我想了解解决这个问题的正确方法.

Dan*_*ner 21

根据微软的说法,这可以通过将以下内容添加到您的 csproj 来解决。

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu1605#issue-1

“.NET Core 1.0 和 1.1 附带的某些包组合在 .NET Core 3.0 或更高版本项目中一起引用时彼此不兼容,并且指定了 RuntimeIdentifier。有问题的包通常以 System. 或Microsoft.,并且版本号在 4.0.0 和 4.3.1 之间。在这种情况下,降级消息将在依赖链中包含一个以 runtime. 开头的包。”

  • TSBTBA:这应该是最好的答案! (2认同)

koe*_*oof 20

不幸的是,除了包所有者之外没有其他选择来升级他们的引用或者你在csproj中添加了clausule.有关更多信息,请参阅此GitHub问题:https://github.com/dotnet/core/issues/907

  • 该问题[显示解决方法](https://github.com/dotnet/core/issues/907#issuecomment-326092990)抑制警告. (2认同)