{"record":{"id":"9d6be28be2aa517f","repo":"clockworklabs/SpacetimeDB","slug":"unsupported-dotnet-version-version-supported","errorCode":null,"errorMessage":"Unsupported --dotnet-version {version}. Supported values: 8, 10.","messagePattern":"Unsupported --dotnet-version (.+?)\\. Supported values: 8, 10\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/cli/src/common_args.rs","lineNumber":70,"sourceCode":"        .require_equals(true)\n        .default_missing_value(\"always\")\n        .help(\n            \"When publishing to an existing database identity, first DESTROY all data associated with the module. With 'on-conflict': only when breaking schema changes occur.\"\n        )\n}\n\npub fn dotnet_version() -> Arg {\n    Arg::new(\"dotnet_version\")\n        .long(\"dotnet-version\")\n        .value_name(\"VERSION\")\n        .value_parser(parse_dotnet_version)\n        .help(\"Target .NET SDK major version for C# projects (e.g. 8 or 10). Auto-detected when omitted.\")\n}\n\npub fn parse_dotnet_version(version: &str) -> anyhow::Result<u8> {\n    match version.parse::<u8>() {\n        Ok(version @ (8 | 10)) => Ok(version),\n        Ok(version) => anyhow::bail!(\"Unsupported --dotnet-version {version}. Supported values: 8, 10.\"),\n        Err(error) => anyhow::bail!(\"Invalid --dotnet-version: {error}\"),\n    }\n}\n\npub fn parse_optional_dotnet_version(dotnet_version: Option<&str>) -> anyhow::Result<Option<u8>> {\n    dotnet_version.map(parse_dotnet_version).transpose()\n}\n\n#[cfg(test)]\nmod tests {\n    use super::parse_optional_dotnet_version;\n\n    #[test]\n    fn dotnet_version_accepts_supported_sdk_majors() {\n        assert_eq!(parse_optional_dotnet_version(None).unwrap(), None);\n        assert_eq!(parse_optional_dotnet_version(Some(\"8\")).unwrap(), Some(8));\n        assert_eq!(parse_optional_dotnet_version(Some(\"10\")).unwrap(), Some(10));\n    }","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/clockworklabs/SpacetimeDB/blob/524b4487d949b61a07d4f39c862d1290259dfd20/crates/cli/src/common_args.rs#L52-L88","documentation":"The --dotnet-version CLI argument is parsed by parse_dotnet_version (crates/cli/src/common_args.rs:70), which accepts only the literal integers 8 and 10 (the .NET SDK majors supported for generated C# projects). Any other number bails with this message; non-numeric values fail separately with 'Invalid --dotnet-version'.","triggerScenarios":"Running spacetime generate --lang csharp --dotnet-version 9 (or 6, 7, 11); passing '8.0' also fails, but as the parse error rather than this branch.","commonSituations":"Teams standardized on .NET 9 assuming it is supported; CI pipelines parameterizing the version and passing an unsupported value; writing 8.0 instead of 8.","solutions":["Use exactly 8 or 10: spacetime generate --lang csharp --dotnet-version 10","Omit the flag — the CLI auto-detects the installed .NET SDK","If you must target another TFM, generate with defaults and adjust the .csproj yourself (unsupported)"],"exampleFix":"# before\nspacetime generate --lang csharp --dotnet-version 9 --project-dir ./csharp\n\n# after\nspacetime generate --lang csharp --dotnet-version 10 --project-dir ./csharp","handlingStrategy":"validation","validationCode":"# Validate before invoking the CLI:\nSUPPORTED=(8 10)\nif ! printf '%s\\n' \"${SUPPORTED[@]}\" | grep -qx \"$DOTNET_VERSION\"; then\n  echo \"--dotnet-version must be one of: ${SUPPORTED[*]}\" >&2; exit 2\nfi\nspacetime generate --lang csharp --dotnet-version \"$DOTNET_VERSION\" --project-dir ./csharp","typeGuard":"const isSupportedDotnetVersion = (v: string): v is '8' | '10' => v === '8' || v === '10';","tryCatchPattern":null,"preventionTips":["Pass a bare major (8 or 10), not 8.0","Omit the flag to use SDK auto-detection in local dev","Pin the supported version in CI variables with a comment listing allowed values"],"tags":["cli","csharp","dotnet","argument-validation","spacetimedb"],"backgroundTag":"invalid-cli-argument-value","analyzedSha":"524b4487d949b61a07d4f39c862d1290259dfd20","analyzedAt":"2026-08-16T23:58:54.611Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}