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 證書生成:為身份驗證服務器創建開發證書
- 端口隨機化:分配隨機端口以避免沖突