Hi. I just upgraded ABP Studio. I created a new Angular-based project, but the Angular folder was not created in the project directory. Is this expected?
8 Answer(s)
-
0
It’s not expected for an Angular UI solution to be created without an
angularfolder.In ABP solution templates, when you select UI: Angular, the generated solution should include an
angulardirectory at the root (this is where the Angular client-side app lives). If it’s missing after creating the solution in ABP Studio, it usually means the UI part was not generated/downloaded successfully during creation (e.g., a failed/blocked “install/generate frontend” step).What you can do (safe steps that don’t change your backend structure):
- Create the solution again with the same options, and ensure ABP Studio completes all steps (especially the frontend generation / npm-yarn install steps if you enabled them).
- If ABP Studio has an option like “Run Install Libs” / “Install packages”, enable it and re-create (or re-run the related step if the UI shows it).
- As a workaround, you can generate the same solution using the CLI (
abp new ... -u angular) and compare outputs; the Angular folder should be there in the CLI-generated structure too.
If ABP Studio consistently creates the backend but skips Angular generation, it’s a Studio-side issue/regression after the upgrade.
- https://abp.io/studio
- https://abp.io/docs/latest/solution-templates/application-module/
This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.
-
0
hi
What is your Studio version?
Can you share the
MyProjectName.abpslnfile?liming.ma@volosoft.com
Thanks.
-
0
{ "id": "0dd1b4ae-d44c-4734-8454-1d0331b04524", "template": "microservice", "versions": { "LeptonX": "5.0.2", "AbpFramework": "10.0.2", "AbpCommercial": "10.0.2", "AbpStudio": "2.1.9", "TargetDotnetFramework": "net10.0" }, "folders": { "items": { "services": {}, "apps": {}, "gateways": {}, "aspire": {}
}}, "defaultRunProfile": "Default", "runProfiles": { "Default": { "path": "etc/abp-studio/run-profiles/Default.abprun.json" }, "Aspire": { "path": "etc/abp-studio/run-profiles/Aspire.abprun.json" } }, "modules": { "VentraHubStructure.AdministrationService": { "path": "services/administration/VentraHubStructure.AdministrationService.abpmdl", "folder": "services" }, "VentraHubStructure.IdentityService": { "path": "services/identity/VentraHubStructure.IdentityService.abpmdl", "folder": "services" }, "VentraHubStructure.Web.Public": { "path": "apps/public/VentraHubStructure.Web.Public.abpmdl", "folder": "apps" }, "VentraHubStructure.PublicGateway": { "path": "gateways/public/VentraHubStructure.PublicGateway.abpmdl", "folder": "gateways" }, "VentraHubStructure.SaasService": { "path": "services/saas/VentraHubStructure.SaasService.abpmdl", "folder": "services" }, "VentraHubStructure.ChatService": { "path": "services/chat/VentraHubStructure.ChatService.abpmdl", "folder": "services" }, "VentraHubStructure.AuditLoggingService": { "path": "services/audit-logging/VentraHubStructure.AuditLoggingService.abpmdl", "folder": "services" }, "VentraHubStructure.GdprService": { "path": "services/gdpr/VentraHubStructure.GdprService.abpmdl", "folder": "services" }, "VentraHubStructure.FileManagementService": { "path": "services/file-management/VentraHubStructure.FileManagementService.abpmdl", "folder": "services" }, "VentraHubStructure.LanguageService": { "path": "services/language/VentraHubStructure.LanguageService.abpmdl", "folder": "services" }, "VentraHubStructure.MobileGateway": { "path": "gateways/mobile/VentraHubStructure.MobileGateway.abpmdl", "folder": "gateways" }, "VentraHubStructure.AuthServer": { "path": "apps/auth-server/VentraHubStructure.AuthServer.abpmdl", "folder": "apps" }, "VentraHubStructure.WebGateway": { "path": "gateways/web/VentraHubStructure.WebGateway.abpmdl", "folder": "gateways" }, "VentraHubStructure.AppHost": { "path": "aspire/app-host/VentraHubStructure.AppHost.abpmdl", "folder": "aspire" }, "VentraHubStructure.ServiceDefaults": { "path": "aspire/service-defaults/VentraHubStructure.ServiceDefaults.abpmdl", "folder": "aspire" }, }, "k8sProfiles": { "local": { "path": "etc/abp-studio/k8s-profiles/local.abpk8s.json" } }, "commands": { "helmBuildDotnetImage": { "triggerTargets": [ "HELM_CHARTS_ROOT", "HELM_MAIN_CHART", "HELM_SUB_CHART" ], "executionTargets": [ "HELM_MAIN_CHART", "HELM_SUB_CHART" ], "displayName": "Build Docker Image(s)", "workingDirectory": "etc/helm", "terminalCommand": "./build-image.ps1 -ProjectPath {{metadata.projectPath}} -ImageName {{metadata.imageName}} -ProjectType {{metadata.projectType}}", "condition": "{{metadata.projectPath != null && metadata.imageName != null && metadata.projectType != null}}" }, "helmInstallChart": { "triggerTargets": [ "HELM_CHARTS_ROOT", "HELM_MAIN_CHART" ], "executionTargets": [ "HELM_MAIN_CHART" ], "displayName": "Install Chart(s)", "workingDirectory": "etc/helm", "terminalCommand": "./install.ps1 -ChartName {{chart.name}} -Namespace {{profile.namespace}} -ReleaseName {{chart.name}}-{{profile.name}} -DotnetEnvironment {{metadata.dotnetEnvironment}} {{~if metadata.k8ssuffix}} -User {{metadata.k8ssuffix}}{{end}}", "requireConfirmation": "true", "confirmationText": "Are you sure to install the chart(s) for the profile {{ profile.name }}?" }, "helmUninstallChart": { "triggerTargets": [ "HELM_CHARTS_ROOT", "HELM_MAIN_CHART" ], "executionTargets": [ "HELM_MAIN_CHART" ], "displayName": "Uninstall Chart(s)", "workingDirectory": "etc/helm", "terminalCommand": "./uninstall.ps1 -Namespace {{profile.namespace}} -ReleaseName {{chart.name}}-{{profile.name}} {{~if metadata.k8ssuffix}} -User {{metadata.k8ssuffix}}{{end}}", "requireConfirmation": "true", "confirmationText": "Are you sure to uninstall the chart(s) for the profile {{profile.name}}?" }, "kubernetesRedeploy": { "triggerTargets": [ "KUBERNETES_SERVICE" ], "executionTargets": [ "KUBERNETES_SERVICE" ], "displayName": "Redeploy", "workingDirectory": "etc/helm", "terminalCommand": "./build-image.ps1 -ProjectPath {{chart.metadata.projectPath}} -ImageName {{chart.metadata.imageName}} -ProjectType {{chart.metadata.projectType}} &&& ./install.ps1 -ChartName {{mainChart.name}} -Namespace {{profile.namespace}} -ReleaseName {{mainChart.name}}-{{profile.name}} -DotnetEnvironment {{mainChart.metadata.dotnetEnvironment}} {{~if metadata.k8ssuffix}} -User {{metadata.k8ssuffix}}{{end}}", "requireConfirmation": "true", "confirmationText": "Are you sure to redeploy the related chart '{{chart.name}}' for the service '{{name}}'?", "condition": "{{chart != null && chart.metadata.projectPath != null && chart.metadata.imageName != null && chart.metadata.projectType != null}}" }, "createTlsSecret": { "triggerTargets": [ "HELM_CHARTS_ROOT" ], "executionTargets": [ "HELM_CHARTS_ROOT" ], "displayName": "Create Self-Signed TLS secret", "workingDirectory": "etc/helm", "terminalCommand": "./create-tls-secrets.ps1 -Namespace {{profile.namespace}} {{~if metadata.k8ssuffix}} -User {{metadata.k8ssuffix}}{{end}}" } }, "helm": { "charts": { "ventrahubstructure": { "name": "ventrahubstructure", "path": "etc/helm/ventrahubstructure", "charts": { "administration": { "name": "administration", "path": "etc/helm/ventrahubstructure/charts/administration", "metadata": { "projectPath": "../../services/administration/VentraHubStructure.AdministrationService/VentraHubStructure.AdministrationService.csproj", "imageName": "ventrahubstructure/administration", "projectType": "dotnet" }, "services": [ ".-administration$" ] }, "angular": { "name": "angular", "path": "etc/helm/ventrahubstructure/charts/angular", "metadata": { "projectPath": "../../apps/angular", "imageName": "ventrahubstructure/angular", "projectType": "angular" }, "services": [ ".-angular$" ] }, "auditlogging": { "name": "auditlogging", "path": "etc/helm/ventrahubstructure/charts/auditlogging", "metadata": { "projectPath": "../../services/audit-logging/VentraHubStructure.AuditLoggingService/VentraHubStructure.AuditLoggingService.csproj", "imageName": "ventrahubstructure/auditlogging", "projectType": "dotnet" }, "services": [ ".-auditlogging$" ] }, "authserver": { "name": "authserver", "path": "etc/helm/ventrahubstructure/charts/authserver", "metadata": { "projectPath": "../../apps/auth-server/VentraHubStructure.AuthServer/VentraHubStructure.AuthServer.csproj", "imageName": "ventrahubstructure/authserver", "projectType": "dotnet" }, "services": [ ".-authserver$" ] }, "chat": { "name": "chat", "path": "etc/helm/ventrahubstructure/charts/chat", "metadata": { "projectPath": "../../services/chat/VentraHubStructure.ChatService/VentraHubStructure.ChatService.csproj", "imageName": "ventrahubstructure/chat", "projectType": "dotnet" }, "services": [ ".-chat$" ] }, "elasticsearch": { "name": "elasticsearch", "path": "etc/helm/ventrahubstructure/charts/elasticsearch", "metadata": {} }, "filemanagement": { "name": "filemanagement", "path": "etc/helm/ventrahubstructure/charts/filemanagement", "metadata": { "projectPath": "../../services/file-management/VentraHubStructure.FileManagementService/VentraHubStructure.FileManagementService.csproj", "imageName": "ventrahubstructure/filemanagement", "projectType": "dotnet" }, "services": [ ".-filemanagement" ] }, "language": { "name": "language", "path": "etc/helm/ventrahubstructure/charts/language", "metadata": { "projectPath": "../../services/language/VentraHubStructure.LanguageService/VentraHubStructure.LanguageService.csproj", "imageName": "ventrahubstructure/language", "projectType": "dotnet" }, "services": [ ".-language" ] }, "gdpr": { "name": "gdpr", "path": "etc/helm/ventrahubstructure/charts/gdpr", "metadata": { "projectPath": "../../services/gdpr/VentraHubStructure.GdprService/VentraHubStructure.GdprService.csproj", "imageName": "ventrahubstructure/gdpr", "projectType": "dotnet" }, "services": [ ".-gdpr$" ] }, "grafana": { "name": "grafana", "path": "etc/helm/ventrahubstructure/charts/grafana", "metadata": {}, "services": [ ".-grafana$" ] }, "identity": { "name": "identity", "path": "etc/helm/ventrahubstructure/charts/identity", "metadata": { "projectPath": "../../services/identity/VentraHubStructure.IdentityService/VentraHubStructure.IdentityService.csproj", "imageName": "ventrahubstructure/identity", "projectType": "dotnet" }, "services": [ ".-identity$" ] }, "kibana": { "name": "kibana", "path": "etc/helm/ventrahubstructure/charts/kibana", "metadata": {}, "services": [ ".-kibana$" ] }, "mobilegateway": { "name": "mobilegateway", "path": "etc/helm/ventrahubstructure/charts/mobilegateway", "metadata": { "projectPath": "../../gateways/mobile/VentraHubStructure.MobileGateway/VentraHubStructure.MobileGateway.csproj", "imageName": "ventrahubstructure/mobilegateway", "projectType": "dotnet" }, "services": [ ".-mobilegateway$" ] }, "prometheus": { "name": "prometheus", "path": "etc/helm/ventrahubstructure/charts/prometheus", "metadata": {} }, "publicgateway": { "name": "publicgateway", "path": "etc/helm/ventrahubstructure/charts/publicgateway", "metadata": { "projectPath": "../../gateways/public/VentraHubStructure.PublicGateway/VentraHubStructure.PublicGateway.csproj", "imageName": "ventrahubstructure/publicgateway", "projectType": "dotnet" }, "services": [ ".-publicgateway$" ] }, "rabbitmq": { "name": "rabbitmq", "path": "etc/helm/ventrahubstructure/charts/rabbitmq" }, "redis": { "name": "redis", "path": "etc/helm/ventrahubstructure/charts/redis" }, "saas": { "name": "saas", "path": "etc/helm/ventrahubstructure/charts/saas", "metadata": { "projectPath": "../../services/saas/VentraHubStructure.SaasService/VentraHubStructure.SaasService.csproj", "imageName": "ventrahubstructure/saas", "projectType": "dotnet" }, "services": [ ".-saas$" ] }, "sqlserver": { "name": "sqlserver", "path": "etc/helm/ventrahubstructure/charts/sqlserver" }, "webgateway": { "name": "webgateway", "path": "etc/helm/ventrahubstructure/charts/webgateway", "metadata": { "projectPath": "../../gateways/web/VentraHubStructure.WebGateway/VentraHubStructure.WebGateway.csproj", "imageName": "ventrahubstructure/webgateway", "projectType": "dotnet" }, "services": [ ".-webgateway$" ] }, "webpublic": { "name": "webpublic", "path": "etc/helm/ventrahubstructure/charts/webpublic", "metadata": { "projectPath": "../../apps/public/VentraHubStructure.Web.Public/VentraHubStructure.Web.Public.csproj", "imageName": "ventrahubstructure/webpublic", "projectType": "dotnet" }, "services": [ ".-webpublic" ] } }, "metadata": {} } } }, "options": { "httpRequests": { "ignoredUrls": [
] }}, "creatingStudioConfiguration": { "template": "microservice", "createdAbpStudioVersion": "2.1.9", "creationTool": "ABP Studio UI",
"uiFramework": "angular", "runInstallLibs": "", "useLocalReferences": "false", "multiTenancy": "true", "includeTests": "true", "dynamicLocalization": "true", "kubernetesConfiguration": "true", "grafanaDashboard": "true", "databaseProvider": "ef", "databaseManagementSystem": "sqlserver", "theme": "leptonx", "themeStyle": "system", "themeMenuPlacement": "side", "mobileFramework": "react-native", "progressiveWebApp": "", "runProgressiveWebAppSupport": "", "publicWebsite": "true", "optionalModules": "GDPR FileManagement TextTemplateManagement AuditLogging Chat OpenIddictAdmin", "socialLogin": "true", "selectedLanguages": ["English", "Arabic", "Chinese (Simplified)", "Chinese (Traditional)", "Czech", "English (United Kingdom)", "Finnish", "French", "German (Germany)", "Hindi ", "Hungarian", "Icelandic", "Italian", "Portuguese (Brazil)", "Romanian (Romania)", "Russian", "Slovak", "Spanish", "Swedish", "Turkish", ], "aspire": "true", "defaultLanguage": "English", "createCommand": "abp new VentraHubStructure -t microservice --ui-framework angular --mobile react-native --database-provider ef --database-management-system sqlserver --theme leptonx --skip-migration --skip-migrator --public-website --without-cms-kit --aspire --dont-run-install-libs --dont-run-bundling -no-language-management -chat -file-management"} }
-
0
version 2.19
-
0
is there any progress ?
-
0
hi
Can you clear your NuGet package cache and restart Studio and try again?
dotnet nuget locals all --clearI tested the command and the angular folder exists.
abp new VentraHubStructure -t microservice --ui-framework angular --mobile react-native --database-provider ef --database-management-system sqlserver --theme leptonx --skip-migration --skip-migrator --public-website --without-cms-kit --aspire --dont-run-install-libs --dont-run-bundling -no-language-management -chat -file-management" -
0
-
0
hi
This is by design.
The Solution Explorer actually encompasses ABP modules and their projects, meaning they are all fundamentally .NET projects. However, Solution Runner allows us to add both C# applications and CLI applications (angular is a CLI application).
Thanks.

