{"record":{"id":"cab4d329d2f65d28","repo":"icsharpcode/ILSpy","slug":"the-chosen-settings-require-at-least-minversion","errorCode":null,"errorMessage":"The chosen settings require at least {minVersion}. Please change the DecompilerSettings accordingly.","messagePattern":"The chosen settings require at least (.+?)\\. Please change the DecompilerSettings accordingly\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs","lineNumber":83,"sourceCode":"\t\t/// This is an export parameter, not decompiler state: when not set explicitly, it defaults\r\n\t\t/// to <see cref=\"DecompilerSettings.GetMinimumRequiredVersion\"/> of the current settings,\r\n\t\t/// and an explicit value below that minimum is rejected (here and again when the export\r\n\t\t/// starts) because the emitted code could not compile under it.\r\n\t\t/// </summary>\r\n\t\tpublic LanguageVersion LanguageVersion {\r\n\t\t\tget { return languageVersion ?? Settings.GetMinimumRequiredVersion(); }\r\n\t\t\tset {\r\n\t\t\t\tValidateLanguageVersion(value);\r\n\t\t\t\tlanguageVersion = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvoid ValidateLanguageVersion(LanguageVersion version)\r\n\t\t{\r\n\t\t\tvar minVersion = Settings.GetMinimumRequiredVersion();\r\n\t\t\tif (version < minVersion)\r\n\t\t\t{\r\n\t\t\t\tthrow new InvalidOperationException($\"The chosen settings require at least {minVersion}.\" +\r\n\t\t\t\t\t\" Please change the DecompilerSettings accordingly.\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbool IProjectInfoProvider.CheckForOverflowUnderflow => Settings.CheckForOverflowUnderflow;\r\n\r\n\t\tpublic IAssemblyResolver AssemblyResolver { get; }\r\n\r\n\t\tpublic IAssemblyReferenceClassifier AssemblyReferenceClassifier { get; }\r\n\r\n\t\tpublic IDebugInfoProvider? DebugInfoProvider { get; }\r\n\r\n\t\t/// <summary>\r\n\t\t/// The MSBuild ProjectGuid to use for the new project.\r\n\t\t/// </summary>\r\n\t\tpublic Guid ProjectGuid { get; }\r\n\r\n\t\t/// <summary>\r","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/icsharpcode/ILSpy/blob/60c08fcb74fcc183130f73c861ed35cf944d0bf1/ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs#L65-L101","documentation":"InvalidOperationException from WholeProjectDecompiler.ValidateLanguageVersion when the LanguageVersion you set is below Settings.GetMinimumRequiredVersion(). Certain DecompilerSettings flags (record classes/structs, nullable reference types, etc.) raise the minimum C# version the emitted code needs; an explicit LangVersion below that minimum cannot compile the output, so the validator rejects it.","triggerScenarios":"Setting projectDecompiler.LanguageVersion (or the export LangVersion) to an older value after enabling features whose decompiled output needs a newer C#, e.g. enabled RecordClasses (needs C# 9+) but set LanguageVersion to C# 7.3.","commonSituations":"Bulk-enabling DecompilerSettings flags without raising LanguageVersion; loading settings from an old config that pins LangVersion to an earlier C#.","solutions":["Raise LanguageVersion to at least Settings.GetMinimumRequiredVersion(), or leave it unset so it defaults to that minimum.","Disable the DecompilerSettings flags that raised the minimum if you must target an older C#.","Check before assigning: var min = Settings.GetMinimumRequiredVersion(); if (desired < min) desired = min;."],"exampleFix":"// before\nsettings.RecordClasses = true;\nprojectDecompiler.LanguageVersion = LanguageVersion.CSharp7_3; // below the raised minimum\n\n// after\nsettings.RecordClasses = true;\nprojectDecompiler.LanguageVersion = settings.GetMinimumRequiredVersion(); // at least the required version","handlingStrategy":"validation","validationCode":"var min = settings.GetMinimumRequiredVersion();\nif (desiredLanguageVersion < min)\n    desiredLanguageVersion = min; // or disable the flags that raised the minimum\nprojectDecompiler.LanguageVersion = desiredLanguageVersion;","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always derive LangVersion from GetMinimumRequiredVersion() after changing feature flags.","Do not carry an old pinned LangVersion across a settings change."],"tags":["project-export","language-version","settings","configuration"],"backgroundTag":null,"analyzedSha":"60c08fcb74fcc183130f73c861ed35cf944d0bf1","analyzedAt":"2026-08-13T11:34:51.223Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}