Why does my build/restore fail when providing a runtime-identifier win-x64? Why does it work when I don't? I stumbled across this when trying out self-contained builds.
To put it differently: Why do dotnet restore --runtime win-x64 and dotnet restore have different dependency graphs?
It works when I use netcoreapp2.1 as a target framework, but it breaks with netcoreapp3.1 or net5.0. It also works when I remove either of my direct dependencies.
<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>
> 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).
I know I can "fix" it by adding these dependencies, but I would prefer a better solution.
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="System.Net.Primitives" Version="4.3.1" />
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />