{"record":{"id":"5e66de34d9a46b0d","repo":"abpframework/abp","slug":"project-name-cannot-be-illegalprojectname-spe","errorCode":null,"errorMessage":"Project name cannot be \"{illegalProjectName}\"! Specify a different name.","messagePattern":"Project name cannot be \"(.+?)\"! Specify a different name\\.","errorType":"exception","errorClass":"CliUsageException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs","lineNumber":47,"sourceCode":"            throw new CliUsageException(\"Project name cannot contain \\\"..\\\"! Specify a different name.\");\r\n        }\r\n    }\r\n\r\n    private static void ValidateSurrogateOrControlChar(string projectName)\r\n    {\r\n        if (projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr)))\r\n        {\r\n            throw new CliUsageException(\"Project name cannot contain surrogate or control characters! Specify a different name.\");\r\n        }\r\n    }\r\n\r\n    private static void ValidateIllegalProjectName(string projectName)\r\n    {\r\n        foreach (var illegalProjectName in IllegalProjectNames)\r\n        {\r\n            if (projectName.Equals(illegalProjectName, StringComparison.OrdinalIgnoreCase))\r\n            {\r\n                throw new CliUsageException(\"Project name cannot be \\\"\" + illegalProjectName + \"\\\"! Specify a different name.\");\r\n            }\r\n        }\r\n    }\r\n\r\n    private static void ValidateIllegalKeywords(string projectName)\r\n    {\r\n        foreach (var illegalKeyword in IllegalKeywords)\r\n        {\r\n            if (projectName.Split(\".\").Contains(illegalKeyword))\r\n            {\r\n                throw new CliUsageException(\"Project name cannot contain the word \\\"\" + illegalKeyword + \"\\\". Specify a different name.\");\r\n            }\r\n        }\r\n    }\r\n\r\n    public static void Validate(string projectName)\r\n    {\r\n        ValidateSurrogateOrControlChar(projectName);\r","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs#L29-L65","documentation":"Thrown by ProjectNameValidator.ValidateIllegalProjectName when the project name exactly equals (case-insensitive) one of the reserved/template names: MyCompanyName.MyProjectName, MyProjectName, or Windows device names CON, AUX, PRN, COM1, LPT2. These names are blocked because they are either unmodified template placeholders or invalid Windows filenames.","triggerScenarios":"Running `abp new MyProjectName` or `abp new CON` without renaming from the template default, or using a Windows-reserved device name.","commonSituations":"Forgetting to rename the default template placeholder; scripting `abp new` with the literal example name; choosing a name that collides with a Windows device name and would fail to create a directory on Windows.","solutions":["Choose a real, unique project name (e.g. Acme.BookStore) instead of the template placeholder.","Avoid Windows device names (CON, AUX, PRN, COM1-9, LPT1-9) regardless of OS for portability.","If generating programmatically, validate the candidate name with ProjectNameValidator.Validate() first."],"exampleFix":"// before\nabp new MyProjectName\nabp new CON\n\n// after\nabp new Acme.BookStore\nabp new Acme.ConsoleApp","handlingStrategy":"validation","validationCode":"static readonly HashSet<string> Reserved = new(StringComparer.OrdinalIgnoreCase)\n{ \"MyCompanyName.MyProjectName\",\"MyProjectName\",\"CON\",\"AUX\",\"PRN\",\"COM1\",\"LPT2\" };\nstatic void EnsureNotReserved(string name)\n{\n    if (Reserved.Contains(name)) throw new ArgumentException($\"'{name}' is reserved/invalid\");\n    Volo.Abp.Cli.Utils.ProjectNameValidator.Validate(name);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never use the template placeholder as the final name.","Avoid Windows device names for portability.","Validate candidate names with ProjectNameValidator before CLI invocation."],"tags":["abp-cli","project-name","validation","windows","reserved-name"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}