clockworklabs/SpacetimeDB · error · anyhow::Error

Unsupported .NET SDK version: {}. SpacetimeDB requires .NET

Error message

Unsupported .NET SDK version: {}. SpacetimeDB requires .NET SDK 8.0 or 10.0.
If you have multiple versions installed, configure your project using https://learn.microsoft.com/en-us/dotnet/core/tools/global-json, or use --dotnet-version to specify the target version explicitly.

What it means

Error "Unsupported .NET SDK version: {}. SpacetimeDB requires .NET SDK 8.0 or 10.0. If you have multiple versions installed, configure your project using https://learn.microsoft.com/en-us/dotnet/core/tools/global-json, or use --dotnet-version to specify the target version explicitly." thrown in clockworklabs/SpacetimeDB.

Source

Thrown at crates/cli/src/tasks/csharp.rs:244

    let build_path = match (dotnet_major, native_aot_flag) {
        // .NET 10: always use NativeAOT-LLVM, no flag needed.
        (Some(10), _) => {
            if native_aot_flag {
                println!("Note: --native-aot is not needed with .NET 10 (NativeAOT-LLVM is used automatically).");
            }
            CsharpBuildPath::Net10Aot
        }
        // .NET 8 with --native-aot: use NativeAOT-LLVM with .NET 8 ILCompiler packages.
        (Some(8), true) => CsharpBuildPath::Net8Aot,
        // .NET 8 without flag: use the existing wasi-experimental JIT path.
        (Some(8), false) => CsharpBuildPath::Net8Jit,
        // Unsupported version.
        _ => {
            let selected_version = dotnet_major
                .map(|v| v.to_string())
                .or_else(|| dotnet_version_str.clone())
                .unwrap_or_else(|| "<unknown>".to_string());
            anyhow::bail!(
                "Unsupported .NET SDK version: {}. SpacetimeDB requires .NET SDK 8.0 or 10.0.\n\
                 If you have multiple versions installed, configure your project using \
                 https://learn.microsoft.com/en-us/dotnet/core/tools/global-json, \
                 or use --dotnet-version to specify the target version explicitly.",
                selected_version
            );
        }
    };

    let desired_sdk_major = match build_path {
        CsharpBuildPath::Net8Jit | CsharpBuildPath::Net8Aot => 8,
        CsharpBuildPath::Net10Aot => 10,
    };
    let active_sdk_major = dotnet_version_str.as_deref().and_then(parse_major_version);
    if active_sdk_major != Some(desired_sdk_major) {
        let active = dotnet_version_str.as_deref().map(str::trim).unwrap_or("<unknown>");
        anyhow::bail!(
            "The selected C# build path requires the .NET {desired_sdk_major} SDK, but the active SDK is .NET {active}.\n\

View on GitHub (pinned to 524b4487d9)

When it happens

Trigger: Thrown at crates/cli/src/tasks/csharp.rs:244 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of clockworklabs/SpacetimeDB@524b4487d9 (2026-08-16). Data as JSON: /api/errors/a070ee8b4ee2924e. Report an issue: GitHub.