{"record":{"id":"b1392147d92be6f3","repo":"clockworklabs/SpacetimeDB","slug":"dotnet-version-is-only-supported-for-c-projects","errorCode":null,"errorMessage":"--dotnet-version is only supported for C# projects (--lang csharp)","messagePattern":"--dotnet-version is only supported for C# projects \\(--lang csharp\\)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/cli/src/subcommands/init.rs","lineNumber":1799,"sourceCode":"            && lang.to_lowercase() != \"csharp\"\n            && lang.to_lowercase() != \"c#\"\n        {\n            anyhow::bail!(\"--native-aot is only supported for C# projects (--lang csharp)\");\n        }\n        // Print warning about Windows-only support\n        println!(\n            \"{}\",\n            \"Note: NativeAOT-LLVM is experimental and building for this platform is currently only supported on Windows.\".yellow()\n        );\n    }\n\n    // Validate that --dotnet-version is only used with C# projects\n    if options.dotnet_version.is_some()\n        && let Some(lang) = server_lang\n        && lang.to_lowercase() != \"csharp\"\n        && lang.to_lowercase() != \"c#\"\n    {\n        anyhow::bail!(\"--dotnet-version is only supported for C# projects (--lang csharp)\");\n    }\n\n    if !is_interactive {\n        // In non-interactive mode, validate all required args are present\n        if project_name_arg.is_none() {\n            anyhow::bail!(\"PROJECT_NAME is required in non-interactive mode\");\n        }\n        if template.is_none() && server_lang.is_none() {\n            anyhow::bail!(\"Either --template or --lang must be provided in non-interactive mode\");\n        }\n    }\n\n    exec_with_options(&mut config, &options).await\n}\n\npub fn init_rust_project(project_path: &Path) -> anyhow::Result<()> {\n    let export_files = vec![\n        (","sourceCodeStart":1781,"sourceCodeEnd":1817,"githubUrl":"https://github.com/clockworklabs/SpacetimeDB/blob/fdd647dfac506d0967cc4492e9fce380706c94cb/crates/cli/src/subcommands/init.rs#L1781-L1817","documentation":"--dotnet-version pins the .NET SDK/framework (8 or 10) used for C# module projects, so it is validated against --lang: passing it together with --lang rust or --lang typescript aborts init. Like the --native-aot check, it only fires when --lang is explicitly given.","triggerScenarios":"`spacetime init myapp --lang rust --dotnet-version 10`; scripts that always pass --dotnet-version regardless of language.","commonSituations":"Template command lines reused across language choices; CI defaults injecting extra flags.","solutions":["Remove --dotnet-version for non-C# projects","Or use `--lang csharp --dotnet-version 8|10`"],"exampleFix":"# before\nspacetime init myapp --lang rust --dotnet-version 10\n# after\nspacetime init myapp --lang rust","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only emit --dotnet-version when --lang csharp is also emitted"],"tags":["spacetime-init","cli","argument-validation","dotnet","csharp"],"backgroundTag":"unsupported-flag-combination","analyzedSha":"fdd647dfac506d0967cc4492e9fce380706c94cb","analyzedAt":"2026-08-20T06:08:37.179Z","contentChangedAt":"2026-08-20T06:08:37.179Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}