dotnet "NETSDK1083: runtime identifier not recognized" in CI
A dotnet publish -r <rid> (or a project RuntimeIdentifier) used a runtime identifier the SDK does not recognize. The RID is misspelled, retired, or not supported for the chosen SDK/target.
What this error means
Publish fails with NETSDK1083 naming the RID it could not recognize. It is deterministic - the same invalid RID fails the same way until corrected to a supported value.
error NETSDK1083: The specified RuntimeIdentifier 'linux-x86' is not recognized.
See https://aka.ms/netsdk1083 for more information.Common causes
Misspelled or non-existent RID
A typo (linux-x86 instead of linux-x64) or a RID that simply does not exist for the platform is rejected by the SDK.
Retired distro-specific RID on a newer SDK
Newer SDKs use portable RIDs (linux-x64) and no longer recognize older distro-specific ones (ubuntu.20.04-x64), so a once-valid RID can stop being recognized.
How to fix it
Use a valid, portable RID
Publish with a supported runtime identifier for your target platform.
dotnet publish -c Release -r linux-x64 --self-contained true
# common RIDs: linux-x64, linux-arm64, win-x64, win-arm64, osx-x64, osx-arm64Set RuntimeIdentifier(s) in the project
Declare the RID in the project so publish and restore agree on it.
<PropertyGroup>
<RuntimeIdentifiers>linux-x64;win-x64</RuntimeIdentifiers>
</PropertyGroup>How to prevent it
- Use portable RIDs from the official RID catalog.
- Keep RIDs in the project (
RuntimeIdentifiers) so they are validated at restore. - Re-check RIDs after an SDK major upgrade in case distro-specific ones were retired.