{"record":{"id":"aef3f83ea3bfba48","repo":"abpframework/abp","slug":"project-name-cannot-contain-specify-a-differ","errorCode":null,"errorMessage":"Project name cannot contain \"..\"! Specify a different name.","messagePattern":"Project name cannot contain \"\\.\\.\"! 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":29,"sourceCode":"            \"MyProjectName\",\r\n            \"CON\", //Windows doesn't accept these names as file name\r\n            \"AUX\",\r\n            \"PRN\",\r\n            \"COM1\",\r\n            \"LPT2\"\r\n        };\r\n\r\n    private static readonly string[] IllegalKeywords = new[]\r\n    {\r\n            \"MauiBlazor\",\r\n            \"Blazor\"\r\n    };\r\n\r\n    private static void ValidateParentDirectoryString(string projectName)\r\n    {\r\n        if (projectName.Contains(\"..\"))\r\n        {\r\n            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","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ProjectNameValidator.cs#L11-L47","documentation":"Thrown by ProjectNameValidator.ValidateParentDirectoryString when the project name passed to the ABP CLI new/create command contains \"..\". This guards against path-traversal-style names that could escape the intended output directory when the name is used to build filesystem paths.","triggerScenarios":"Running `abp new <name>` (or equivalent) where <name> contains the substring \"..\", e.g. \"Foo..Bar\", \"../Escape\", or \"a..b\". The check is a plain Contains(\"..\") so any two consecutive dots trigger it.","commonSituations":"Typo with double dots in a dotted module-style name; attempt to specify a relative path as the project name; copy-paste from a namespace that contains \"..\".","solutions":["Remove the \"..\" substring from the project name (use single dots to separate segments, or none).","If you intended a relative output path, use the CLI's output-directory option instead of embedding it in the name.","Validate the name with ProjectNameValidator.Validate before invoking the CLI programmatically."],"exampleFix":"// before\nabp new Acme..BookStore\n\n// after\nabp new Acme.BookStore","handlingStrategy":"validation","validationCode":"static void EnsureProjectName(string name)\n{\n    if (name.Contains(\"..\")) throw new ArgumentException(\"Project name must not contain '..'\");\n    Volo.Abp.Cli.Utils.ProjectNameValidator.Validate(name);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run ProjectNameValidator.Validate() before invoking `abp new`.","Use the CLI's output-directory option for paths, never embed them in the name.","Reject names with consecutive dots upstream."],"tags":["abp-cli","project-name","path-traversal","validation","security"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}