{"record":{"id":"adbe4b0cb8ff4ec1","repo":"abpframework/abp","slug":"the-option-you-provided-for-ui-framework-is-invali","errorCode":null,"errorMessage":"The option you provided for UI Framework is invalid!","messagePattern":"The option you provided for UI Framework is invalid!","errorType":"exception","errorClass":"CliUsageException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs","lineNumber":684,"sourceCode":"        {\n            case null:\n                return UiFramework.NotSpecified;\n            case \"none\":\n                return UiFramework.None;\n            case \"mvc\":\n                return UiFramework.Mvc;\n            case \"angular\":\n                return UiFramework.Angular;\n            case \"blazor\":\n                return UiFramework.Blazor;\n            case \"blazor-server\":\n                return UiFramework.BlazorServer;\n            case \"blazor-webapp\":\n                return UiFramework.BlazorWebApp;\n            case \"maui-blazor\" when template == AppProTemplate.TemplateName:\n                return UiFramework.MauiBlazor;\n            default:\n                throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(\"UI Framework\"));\n        }\n    }\n\n    protected virtual Theme? GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = \"app\")\n    {\n        var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long)?.ToLowerInvariant();\n\n        return template switch\n        {\n            AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName => GetAppTheme(),\n            AppProTemplate.TemplateName or AppNoLayersProTemplate.TemplateName or MicroserviceProTemplate.TemplateName => GetAppProTheme(),\n            _ => null\n        };\n\n        Theme GetAppTheme()\n        {\n            return theme switch\n            {","sourceCodeStart":666,"sourceCodeEnd":702,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs#L666-L702","documentation":"Thrown by ProjectCreationCommandBase.GetUiFramework when the UI framework option value does not match any case: mvc, angular, blazor, blazor-server, blazor-webapp, or (for AppPro template only) maui-blazor. The default case throws CliUsageException. The maui-blazor option is gated to the AppPro template specifically.","triggerScenarios":"Passing a -u/--ui value not in the supported set, or passing 'maui-blazor' with a non-Pro template. The switch falls through all cases to default.","commonSituations":"Developer passes an outdated or misspelled UI framework name, uses 'react' instead of 'angular', or tries 'maui-blazor' on a non-Pro template. Also when the --no-ui flag is not set and the ui option is missing entirely but the method is still called with an invalid default.","solutions":["Use one of the supported UI frameworks: mvc, angular, blazor, blazor-server, blazor-webapp","For maui-blazor, use the AppPro template: `abp new MyProject -t app-pro -u maui-blazor`","Check spelling — values are lowercase and must match exactly (e.g., 'blazor-server' not 'blazorserver')"],"exampleFix":"// before\nabp new MyProject -u react\n\n// after\nabp new MyProject -u angular","handlingStrategy":"validation","validationCode":"// Validate UI framework option\nvar validUi = new HashSet<string>(StringComparer.OrdinalIgnoreCase)\n    { \"mvc\", \"angular\", \"blazor\", \"blazor-server\", \"blazor-webapp\", \"maui-blazor\" };\nif (optionValue == \"maui-blazor\" && template != AppProTemplate.TemplateName)\n{\n    Console.Error.WriteLine(\"Error: maui-blazor requires the app-pro template.\");\n    return;\n}\nif (!validUi.Contains(optionValue ?? \"\"))\n{\n    Console.Error.WriteLine(\"Error: UI Framework must be mvc, angular, blazor, blazor-server, or blazor-webapp.\");\n    return;\n}","typeGuard":"// Type guard: UI framework valid for the given template\nstatic bool IsValidUiFramework(string? value, string template) => value?.ToLowerInvariant() switch\n{\n    \"mvc\" or \"angular\" or \"blazor\" or \"blazor-server\" or \"blazor-webapp\" => true,\n    \"maui-blazor\" => template == AppProTemplate.TemplateName,\n    _ => false\n};","tryCatchPattern":"try\n{\n    await projectCreationCommand.ExecuteAsync(commandLineArgs);\n}\ncatch (CliUsageException ex) when (ex.Message.Contains(\"UI Framework is invalid\"))\n{\n    logger.LogError(\"Use: mvc, angular, blazor, blazor-server, blazor-webapp (maui-blazor needs app-pro).\");\n}","preventionTips":["Use lowercase exact values matching the switch cases","maui-blazor is gated to the AppPro template only","Distinguish blazor (WASM) from blazor-server and blazor-webapp"],"tags":["cli","abp-cli","invalid-option","project-creation","ui-framework"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}