由于传递依赖而提供运行时标识符时,Dotnet 恢复失败

Ale*_*AIT 5 .net c# msbuild nuget

为什么在提供运行时标识符时我的构建/恢复失败win-x64?为什么它有效,而我却不起作用?我在尝试独立构建时偶然发现了这一点。

换句话说:为什么dotnet restore --runtime win-x64dotnet restore具有不同的依赖图?

当我用作netcoreapp2.1目标框架时它可以工作,但它会因netcoreapp3.1or 而中断net5.0。当我删除任何一个直接依赖项时它也有效。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.23" />
        <PackageReference Include="Serilog.Sinks.RollingFileAlternate" Version="2.0.9" />
    </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
> dotnet restore
  Determining projects to restore...
  Restored ...\ConsoleApp1\ConsoleApp1.csproj (in 289 ms).

> dotnet restore --runtime win-x64

  Determining projects to restore...
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives 4.0.1 -> runtime.win.Microsoft.Win32.Primitives 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Text.Encoding.Extensions from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.Text.Encoding.Extensions (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Text.Encoding.Extensions (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Text.Encoding.Extensions from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Text.Encoding.Extensions (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Text.Encoding.Extensions (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> Microsoft.Win32.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.IO.FileSystem (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Net.Primitives from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Net.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Buffers 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Security.Principal.Windows 4.3.0 -> Microsoft.Win32.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
  Failed to restore ...\ConsoleApp1\ConsoleApp1.csproj (in 406 ms).
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过添加这些依赖项来“修复”它,但我更喜欢更好的解决方案。

> dotnet restore
  Determining projects to restore...
  Restored ...\ConsoleApp1\ConsoleApp1.csproj (in 289 ms).

> dotnet restore --runtime win-x64

  Determining projects to restore...
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives 4.0.1 -> runtime.win.Microsoft.Win32.Primitives 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Text.Encoding.Extensions from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Console 4.0.0 -> runtime.win.System.Console 4.3.0 -> System.Text.Encoding.Extensions (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Text.Encoding.Extensions (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Text.Encoding.Extensions from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Text.Encoding.Extensions (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Text.Encoding.Extensions (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> Microsoft.Win32.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives 4.0.11 -> runtime.win.System.Net.Primitives 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.IO.FileSystem (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.IO.FileSystem.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Net.Primitives from 4.3.0 to 4.0.11. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Net.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Primitives (>= 4.0.11) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.Handles from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Runtime.Handles (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.Handles (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Runtime.InteropServices from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: System.Diagnostics.Tracing from 4.3.0 to 4.1.0. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.IO.FileSystem 4.0.1 -> runtime.win.System.IO.FileSystem 4.3.0 -> System.Buffers 4.3.0 -> System.Diagnostics.Tracing (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Diagnostics.Tracing (>= 4.1.0) [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605: Detected package downgrade: Microsoft.Win32.Primitives from 4.3.0 to 4.0.1. Reference the package directly from the project to select a different version.  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Net.Sockets 4.1.0 -> runtime.win.System.Net.Sockets 4.3.0 -> System.Security.Principal.Windows 4.3.0 -> Microsoft.Win32.Primitives (>= 4.3.0)  [...\ConsoleApp1\ConsoleApp1.sln]
...\ConsoleApp1\ConsoleApp1.csproj : error NU1605:  ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives (>= 4.0.1) [...\ConsoleApp1\ConsoleApp1.sln]
  Failed to restore ...\ConsoleApp1\ConsoleApp1.csproj (in 406 ms).
Run Code Online (Sandbox Code Playgroud)

Oma*_*jid 3

首先,对术语有点挑剔。netcoreapp2.1netcoreapp3.1通常net5.0称为目标框架(更正式地称为目标框架名字,通常缩写为 TFM)。运行时标识符(通常缩写为 RID)标识 .NET(核心)运行的平台。它们包括linux-x64(Linux on x86_64)、win-arm64(Windows on Arm64)等。

目标框架标识您的应用程序所针对的框架。目标框架包含许多它所包含的程序集(例如System.Collections.Generic、 或)。System.Runtime.InteropServices所有这些程序集都是特定版本的。

Serilog.Sinks.RollingFileAlternate作为一个程序集,也依赖于其他程序集。您可以在输出中看到这样一些这样的依赖链:

ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> Microsoft.Win32.Primitives 4.0.1 -> runtime.win.Microsoft.Win32.Primitives 4.3.0 -> System.Runtime.InteropServices (>= 4.3.0)
ConsoleApp1 -> Serilog.Sinks.RollingFileAlternate 2.0.9 -> NETStandard.Library 1.6.0 -> System.Runtime.InteropServices (>= 4.1.0)
Run Code Online (Sandbox Code Playgroud)

首先看第二行,它说 Serilog 依赖于 NETStandard.Library 1.6.0(相当于TFM),它依赖于4.1.0netstandard1.6的特定版本。System.Runtime.InteropServices

第一行说Serilog依赖Microsoft.Win32.Primitives,即依赖运行时包runtime.win.Microsoft.Win32.Primitives。据我了解,这些runtime.*包是由您的 .NET SDK/运行时安装提供的。因此,使用它会导致对较新版本的System.Runtime.InteropServices.

由于两个不同的依赖链导致需要两个不同版本的 System.Runtime.InteropServices,因此这会被标记为降级。

如果您使用netcoreapp2.1(.NET Core 2.1),则该runtime.win.Microsoft.Win32.Primitives包具有较低(且匹配)版本 (4.1.0)。在这种情况下,所有依赖链都将导致相同的版本,并且不会识别出包降级。