Skip to content

React to breaking RID change in .NET 8 Preview 6 #543

Closed
@halter73

Description

@halter73

There's a breaking change to the .NET SDK coming in .NET 8 Preview 6 (Not preview 5 like the docs indicate @gewarren) that makes any app depending on SQLitePCLRaw.core to output a warning like the following at runtime:

You need to install the latest preview 6 SDK which isn't yet released to repo. In the meantime, you can install the nightlies from https://github.com/dotnet/installer#table

Once you do, you can create a basic console app using something like dotnet new console, make sure you're using a preview6 SDK with a global.json, replace the csproj with:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="SQLitePCLRaw.lib.e_sqlite3" Version="2.1.5" />
  </ItemGroup>

</Project>

If you run or publish the app, you see the following warning. Fortunately, this does not stop the app from running successfully, but it adds noise to the output of any app depending on the package directly or transitively.

> dotnet run
D:\dev\.dotnet\sdk\8.0.100-preview.6.23315.26\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.target
s(267,5): warning NETSDK1206: Found version-specific or distribution-specific runtime identifier(s): alpine-arm, alpine
-arm64, alpine-x64, browser-wasm, maccatalyst-arm64, maccatalyst-x64. Affected libraries: SQLitePCLRaw.lib.e_sqlite3. I
n .NET 8.0 and higher, assets for version-specific and distribution-specific runtime identifiers will not be found by d
efault. See https://aka.ms/dotnet/rid-usage for details. [D:\dev\manual-tests-issue-2163\manual-tests-issue-21
63.csproj]
Hello, World!

My understanding is that RIDs like alpine-arm should be replaced with just linux-musl-arm which already exists. Similarly, browser-wasm should be replaced with just wasm. I'm not sure about the maccatalyst targets. I assume the osx binaries are incompatible since they come from a different build artifact in the nuspec.

https://learn.microsoft.com/en-us/dotnet/core/compatibility/deployment/8.0/rid-asset-list

@gewarren @elinor-fung @richlander I think the breaking change announcement might need to go into a lot more detail about what's allowed. It wasn't clear to me that wasm is probably the intended replacement for browser-wasm until looking at dotnet/runtime#83246. WASM isn't mentioned anywhere in the breaking change announcement. Neither are the full list of OS's, libc versions, and processor architectures.

@davidortinau Do you know what the plan is for libraries that target maui-supported RIDs like maccatalys, android and ios?

@roji Heads up in case you start seeing this in Microsoft.Data.Sqlite.Core

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions