ABP Framework 开发工具
概述
该页面详细介绍了 ABP Framework 提供的开发工具和命令行界面(CLI),用于创建、管理和定制 ABP 项目。ABP CLI 是主要开发工具,支持项目脚手架、模块添加、数据库迁移管理及常见开发任务自动化。
ABP CLI 架构
CLI 命令结构
ABP CLI 基于命令模式架构,核心命令类继承自IConsoleCommand
,主要包含:
核心 CLI 命令
命令 | 类 | 用途 |
---|---|---|
abp new | NewCommand | 从模板创建新 ABP 项目 |
abp add-module | - | 向现有解决方案添加模块 |
abp create-migration-and-run-migrator | CreateMigrationAndRunMigratorCommand | 创建并运行数据库迁移 |
项目创建工作流
abp new
命令遵循全面的工作流,基于模板创建和定制新 ABP 项目:
命令行选项
NewCommand
支持丰富的配置选项:
选项 | 简写 | 用途 |
---|---|---|
--template | -t | 指定模板类型(app, module, microservice) |
--ui | -u | UI 框架(mvc, angular, blazor, blazor-server) |
--database-provider | -d | 数据库提供程序(ef, mongodb) |
--database-management-system | --dbms | 数据库类型(sqlserver, mysql, postgresql 等) |
--theme | - | UI 主题(leptonx, leptonx-lite, basic, lepton) |
--output-folder | -o | 输出目录 |
--version | -v | 使用的 ABP 版本 |
项目构建管道
项目构建管道通过一系列可配置步骤处理模板,基于指定选项定制生成的项目:
特定模板构建步骤
每种模板类型通过GetCustomSteps()
方法实现自定义构建步骤:
-
应用模板步骤:
SwitchDatabaseProvider()
- 配置 Entity Framework 或 MongoDBDeleteUnrelatedProjects()
- 移除未使用的 UI 项目类型ConfigureTheme()
- 设置选定的 UI 主题ConfigureTieredArchitecture()
- 配置多层部署RandomizeSslPorts()
- 分配随机 SSL 端口以避免冲突
-
模块模板步骤:
DeleteUnrelatedProjects()
- 如果指定--no-ui
,移除 UI 项目RandomizeSslPorts()
- 为宿主项目配置 SSL 端口RemoveMigrations()
- 清理模板迁移文件UpdateNuGetConfig()
- 更新 NuGet 包源
-
微服务模板步骤:
DeleteUnrelatedProjects()
- 移除未使用的 UI 应用程序ConfigureTheme()
- 跨微服务配置主题UpdateDockerImages()
- 更新 Docker 配置
数据库管理工具
ABP CLI 提供全面的数据库管理功能,包括迁移创建、数据库提供程序切换和连接字符串管理:
数据库提供程序支持
迁移管理
InitialMigrationCreator
处理新项目的数据库迁移创建:
- EF Core 迁移:为 Entity Framework 项目创建初始迁移文件
- 多上下文支持:处理主数据库上下文和租户数据库上下文
- 特定数据库提供程序:根据选定的数据库提供程序调整迁移命令
关键类:
InitialMigrationCreator
- 创建初始数据库迁移EfCoreMigrationManager
- 管理持续的迁移操作CreateMigrationAndRunMigratorCommand
- 迁移工作流的 CLI 命令
数据库提供程序切换
DatabaseManagementSystemChangeStep
处理不同数据库提供程序之间的切换:
主题和 UI 配置
ABP CLI 支持多种 UI 框架和主题,在项目创建期间自动配置:
UI 框架支持
框架 | 模板选项 | 主要功能 |
---|---|---|
ASP.NET Core MVC | mvc | 服务器端渲染,Razor Pages |
Angular | angular | SPA,TypeScript,Angular CLI 集成 |
Blazor WebAssembly | blazor | 客户端.NET,渐进式 Web 应用支持 |
Blazor Server | blazor-server | 服务器端 Blazor,基于 SignalR |
Blazor Web App | blazor-webapp | .NET 8+混合渲染 |
主题配置过程
ChangeThemeStep
在项目创建期间处理主题切换:
- 包替换:更新与主题相关的 NuGet 和 NPM 包
- 模块配置:在 C#代码中更新主题模块依赖
- 资源管理:移除未使用的主题资源和徽标
- 特定框架:处理 MVC、Blazor 和 Angular 主题之间的差异
项目验证和质量控制
项目名称验证
ProjectNameValidator
确保项目名称符合要求:
- 非法名称:防止使用"MyCompanyName.MyProjectName"等保留名称
- Windows 兼容性:阻止在 Windows 上无效的名称,如"CON"、“AUX”、“PRN”
- 字符验证:防止控制字符和父目录引用
- 关键字验证:阻止"Blazor"等有问题的关键字
创建后自动化
项目创建后,CLI 自动执行多项设置任务:
- 客户端库安装:为 Web 项目运行
abp install-libs
- 资源捆绑:为 Blazor WebAssembly 项目运行
abp bundle
- 初始迁移:创建数据库迁移文件
- SSL 证书生成:为身份验证服务器创建开发证书
- 端口随机化:分配随机端口以避免冲突