{"record":{"id":"36210912b2367125","repo":"abpframework/abp","slug":"can-not-set-companyname-if-companynameplacehold","errorCode":null,"errorMessage":"Can not set {companyName} if {companyNamePlaceHolder} is null.","messagePattern":"Can not set (.+?) if (.+?) is null\\.","errorType":"exception","errorClass":"UserFriendlyException","httpStatus":null,"severity":"error","filePath":"framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenamer.cs","lineNumber":26,"sourceCode":"public class SolutionRenamer\n{\n    private readonly List<FileEntry> _entries;\n    private readonly string _companyNamePlaceHolder;\n    private readonly string _projectNamePlaceHolder;\n\n    private readonly string _companyName;\n    private readonly string _projectName;\n\n    public SolutionRenamer(List<FileEntry> entries, string companyNamePlaceHolder, string projectNamePlaceHolder, string companyName, string projectName)\n    {\n        if (string.IsNullOrWhiteSpace(companyName))\n        {\n            companyName = null;\n        }\n\n        if (companyNamePlaceHolder == null && companyName != null)\n        {\n            throw new UserFriendlyException($\"Can not set {nameof(companyName)} if {nameof(companyNamePlaceHolder)} is null.\");\n        }\n\n        _entries = entries;\n\n        _companyNamePlaceHolder = companyNamePlaceHolder;\n        _projectNamePlaceHolder = projectNamePlaceHolder ?? throw new ArgumentNullException(nameof(projectNamePlaceHolder));\n\n        _companyName = companyName;\n        _projectName = projectName ?? throw new ArgumentNullException(nameof(projectName));\n    }\n\n    public void Run()\n    {\n        if (_companyNamePlaceHolder != null)\n        {\n            if (_companyName != null)\n            {\n                RenameHelper.RenameAll(_entries, _companyNamePlaceHolder, _companyName);","sourceCodeStart":8,"sourceCodeEnd":44,"githubUrl":"https://github.com/abpframework/abp/blob/7ed43b1931b9df46a50c0c59148a18645641d0df/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenamer.cs#L8-L44","documentation":"Thrown by the `SolutionRenamer` constructor when a `companyName` is supplied but `companyNamePlaceHolder` is null. It is a `UserFriendlyException` enforcing the invariant that you can only rename the company if a placeholder for it exists in the template.","triggerScenarios":"Calling the renamer with `companyName` set while `companyNamePlaceHolder` is null, i.e. asking to replace a company name when the template does not define a company placeholder.","commonSituations":"A template/module that has no company segment (single-name solution) but the user passes `--company-name`; misordered arguments when constructing `SolutionRenamer` programmatically.","solutions":["Omit `companyName` (pass null) when the template has no company placeholder.","If you do need a company name, use a template that defines a company placeholder and pass the matching `companyNamePlaceHolder`."],"exampleFix":"// before\nnew SolutionRenamer(entries, companyNamePlaceHolder: null, projectNamePlaceHolder: \"MyProj\", companyName: \"Acme\", projectName: \"BookStore\");\n// after (no company placeholder => no company name)\nnew SolutionRenamer(entries, null, \"MyProj\", companyName: null, projectName: \"BookStore\");","handlingStrategy":"validation","validationCode":"if (!string.IsNullOrWhiteSpace(companyName) && string.IsNullOrWhiteSpace(companyNamePlaceHolder))\n    throw new ArgumentException(\"companyName requires a non-null companyNamePlaceHolder.\");\nvar renamer = new SolutionRenamer(entries, companyNamePlaceHolder, projectNamePlaceHolder, companyName, projectName);","typeGuard":"static bool CanSetCompany(string placeHolder, string company) =>\n    string.IsNullOrWhiteSpace(company) || !string.IsNullOrWhiteSpace(placeHolder);","tryCatchPattern":"try { new SolutionRenamer(entries, companyPH, projectPH, company, project); }\ncatch (UserFriendlyException ex) when (ex.Message.Contains(\"companyNamePlaceHolder\"))\n{\n    // drop the company name and retry, or choose a template with a company placeholder\n}","preventionTips":["Only pass a company name when the template defines a company placeholder.","Document which templates support company placeholders.","Centralize renamer construction behind a helper that enforces this invariant."],"tags":["cli","project-building","solution-renamer","validation","argument"],"backgroundTag":null,"analyzedSha":"7ed43b1931b9df46a50c0c59148a18645641d0df","analyzedAt":"2026-08-13T16:26:11.351Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}