Projects that target .NET 8 or later versions now use a smaller, "portable" runtime identifier (RID) graph.
Previous behaviorThe .NET SDK used a complex RID graph to determine assets when building or publishing a project.
New behaviorStarting in .NET 8, the .NET SDK uses a smaller graph consisting of only portable RIDs, for projects that target .NET 8 or a later version. This means that the SDK won't recognize version-specific or distro-specific RIDs by default. You might see the following error (or similar) when you build your project:
Version introducederror NETSDK1083: The specified RuntimeIdentifier 'win10-x64' is not recognized. See https://aka.ms/netsdk1083 for more information.
.NET 8 RC 1
Type of breaking changeThis change is a behavioral change and can also affect source compatibility.
Reason for changeThe RID graph was costly to maintain and understand, requiring .NET itself to be distro-aware in a fragile manner. The .NET team and the community spend a non-trivial amount of time updating the graph and backporting such updates to previous releases. The long-term goal is to stop updating the RID graph, stop reading it, and eventually remove it. This breaking change is a step towards that goal.
Recommended actionUse portable RIDs, for example, linux-<arch>
, linux-musl-<arch>
, osx-<arch>
, and win-<arch>
, instead of version-specific or distro-specific RIDs, such as ubuntu.16.04-<arch>
, osx.10.11-<arch>
, and win10-<arch>
.
If you specify the RID by using the RuntimeIdentifier MSBuild property in your project file (*.csproj, *.vbproj, or *.fsproj), change it accordingly. For example, change <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
to <RuntimeIdentifier>win-x64</RuntimeIdentifier>
in your project file:
<PropertyGroup>
...
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
If you specify the RID as a command-line argument, make a similar change. For example, instead of dotnet publish --framework net8.0 --runtime win10-x64
, use the command dotnet publish --framework net8.0 --runtime win-x64
.
If you need to revert to the previous behavior of using the old, full RID graph, you can set the UseRidGraph
MSBuild property to true
in your project file. However, the old RID graph won't be updated in the future to attempt to handle any other distros or architectures.
<PropertyGroup>
<UseRidGraph>true</UseRidGraph>
</PropertyGroup>
See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4