15 ABP Framework 開發工具

ABP Framework 開發工具

概述

該頁面詳細介紹了 ABP Framework 提供的開發工具和命令行界面(CLI),用于創建、管理和定制 ABP 項目。ABP CLI 是主要開發工具,支持項目腳手架、模塊添加、數據庫遷移管理及常見開發任務自動化。

ABP CLI 架構

CLI 命令結構

ABP CLI 基于命令模式架構,核心命令類繼承自IConsoleCommand,主要包含:

ABP CLI Entry Point
NewCommand
AddModuleCommand
CreateMigrationAndRunMigratorCommand
ProjectCreationCommandBase
TemplateProjectBuilder
ProjectBuildPipeline
Template System
AppTemplateBase
ModuleTemplateBase
MicroserviceTemplateBase

核心 CLI 命令

命令用途
abp newNewCommand從模板創建新 ABP 項目
abp add-module-向現有解決方案添加模塊
abp create-migration-and-run-migratorCreateMigrationAndRunMigratorCommand創建并運行數據庫遷移

項目創建工作流

abp new命令遵循全面的工作流,基于模板創建和定制新 ABP 項目:

abp new ProjectName
ProjectNameValidator.Validate()
Parse Command Arguments
Select Template Type
App Template
Module Template
Microservice Template
Create ProjectBuildArgs
TemplateProjectBuilder.BuildAsync()
Execute Build Pipeline
Template Custom Steps
Common Build Steps
Switch Database Provider
Configure UI Framework
Configure Theme
Project/Solution Rename
Template Code Replace
Post-Processing
Create Initial Migrations
Install Client Libraries
Bundle Assets
Project Created

命令行選項

NewCommand支持豐富的配置選項:

選項簡寫用途
--template-t指定模板類型(app, module, microservice)
--ui-uUI 框架(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 版本

項目構建管道

項目構建管道通過一系列可配置步驟處理模板,基于指定選項定制生成的項目:

ProjectBuildContext
ProjectBuildPipeline
FileEntryListReadStep
CreateAppSettingsSecretsStep
Template.GetCustomSteps()
ProjectReferenceReplaceStep
App Template Steps
Module Template Steps
Microservice Template Steps
TemplateCodeDeleteStep
SolutionRenameStep
LicenseCodeReplaceStep
DatabaseManagementSystemChangeStep
CreateProjectResultZipStep
SwitchDatabaseProvider
DeleteUnrelatedProjects
ConfigureTheme
RandomizeSslPorts

特定模板構建步驟

每種模板類型通過GetCustomSteps()方法實現自定義構建步驟:

  • 應用模板步驟

    • SwitchDatabaseProvider() - 配置 Entity Framework 或 MongoDB
    • DeleteUnrelatedProjects() - 移除未使用的 UI 項目類型
    • ConfigureTheme() - 設置選定的 UI 主題
    • ConfigureTieredArchitecture() - 配置多層部署
    • RandomizeSslPorts() - 分配隨機 SSL 端口以避免沖突
  • 模塊模板步驟

    • DeleteUnrelatedProjects() - 如果指定--no-ui,移除 UI 項目
    • RandomizeSslPorts() - 為宿主項目配置 SSL 端口
    • RemoveMigrations() - 清理模板遷移文件
    • UpdateNuGetConfig() - 更新 NuGet 包源
  • 微服務模板步驟

    • DeleteUnrelatedProjects() - 移除未使用的 UI 應用程序
    • ConfigureTheme() - 跨微服務配置主題
    • UpdateDockerImages() - 更新 Docker 配置

數據庫管理工具

ABP CLI 提供全面的數據庫管理功能,包括遷移創建、數據庫提供程序切換和連接字符串管理:

數據庫提供程序支持

Database Provider Configuration
EntityFrameworkCore
MongoDB
SQL Server
MySQL
PostgreSQL
Oracle
SQLite
InitialMigrationCreator
Local MongoDB
MongoDB Atlas
DatabaseManagementSystemChangeStep
ConnectionStringProvider

遷移管理

InitialMigrationCreator處理新項目的數據庫遷移創建:

  • EF Core 遷移:為 Entity Framework 項目創建初始遷移文件
  • 多上下文支持:處理主數據庫上下文和租戶數據庫上下文
  • 特定數據庫提供程序:根據選定的數據庫提供程序調整遷移命令

關鍵類:

  • InitialMigrationCreator - 創建初始數據庫遷移
  • EfCoreMigrationManager - 管理持續的遷移操作
  • CreateMigrationAndRunMigratorCommand - 遷移工作流的 CLI 命令

數據庫提供程序切換

DatabaseManagementSystemChangeStep處理不同數據庫提供程序之間的切換:

Project Template
DatabaseManagementSystemChangeStep
Update NuGet Packages
Update Module Dependencies
Update Connection Methods
Update Connection Strings
Volo.Abp.EntityFrameworkCore.SqlServer
Volo.Abp.EntityFrameworkCore.MySQL
Volo.Abp.EntityFrameworkCore.PostgreSql
UseSqlServer()
UseMySql()
UseNpgsql()

主題和 UI 配置

ABP CLI 支持多種 UI 框架和主題,在項目創建期間自動配置:

UI 框架支持

框架模板選項主要功能
ASP.NET Core MVCmvc服務器端渲染,Razor Pages
AngularangularSPA,TypeScript,Angular CLI 集成
Blazor WebAssemblyblazor客戶端.NET,漸進式 Web 應用支持
Blazor Serverblazor-server服務器端 Blazor,基于 SignalR
Blazor Web Appblazor-webapp.NET 8+混合渲染

主題配置過程

ChangeThemeStep在項目創建期間處理主題切換:

  • 包替換:更新與主題相關的 NuGet 和 NPM 包
  • 模塊配置:在 C#代碼中更新主題模塊依賴
  • 資源管理:移除未使用的主題資源和徽標
  • 特定框架:處理 MVC、Blazor 和 Angular 主題之間的差異

項目驗證和質量控制

項目名稱驗證

ProjectNameValidator確保項目名稱符合要求:

  • 非法名稱:防止使用"MyCompanyName.MyProjectName"等保留名稱
  • Windows 兼容性:阻止在 Windows 上無效的名稱,如"CON"、“AUX”、“PRN”
  • 字符驗證:防止控制字符和父目錄引用
  • 關鍵字驗證:阻止"Blazor"等有問題的關鍵字

創建后自動化

項目創建后,CLI 自動執行多項設置任務:

  1. 客戶端庫安裝:為 Web 項目運行abp install-libs
  2. 資源捆綁:為 Blazor WebAssembly 項目運行abp bundle
  3. 初始遷移:創建數據庫遷移文件
  4. SSL 證書生成:為身份驗證服務器創建開發證書
  5. 端口隨機化:分配隨機端口以避免沖突

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93249.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣top100(day02-01)--鏈表01

160. 相交鏈表 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {/*** 查找兩個鏈表的相交節點* param headA 第一個…

LLM 中 語音編碼與文本embeding的本質區別

直接使用語音編碼,是什么形式,和文本的區別 直接使用語音編碼的形式 語音編碼是將模擬語音信號轉換為數字信號的技術,其核心是對語音的聲學特征進行數字化表征,直接承載語音的物理聲學信息。其形式可分為以下幾類: 1. 基于波形的編碼(保留原始波形特征) 脈沖編碼調制…

模型選擇與調優

一、模型選擇與調優在機器學習中,模型的選擇和調優是一個重要的步驟,它直接影響到最終模型的性能1、交叉驗證在任何有監督機器學習項目的模型構建階段,我們訓練模型的目的是從標記的示例中學習所有權重和偏差的最佳值如果我們使用相同的標記示…

vue+Django農產品推薦與價格預測系統、雙推薦+機器學習預測+知識圖譜

vueflask農產品推薦與價格預測系統、雙推薦機器學習價格預測知識圖譜文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站,有好處!編號: D010 技術架構: vueflaskmysqlneo4j 核心技術: 基…

數據分析小白訓練營:基于python編程語言的Numpy庫介紹(第三方庫)(下篇)

銜接上篇文章:數據分析小白訓練營:基于python編程語言的Numpy庫介紹(第三方庫)(上篇)(十一)數組的組合核心功能:一、生成基數組np.arange().reshape() 基礎運算功能&…

負載因子(Load Factor) :哈希表(Hash Table)中的一個關鍵性能指標

負載因子(Load Factor) 是哈希表(Hash Table)中的一個關鍵性能指標,用于衡量哈希表的空間利用率和發生哈希沖突的可能性。一:定義負載因子(通常用希臘字母 λ 表示)的計算公式為&…

監控插件SkyWalking(一)原理

一、介紹 1、簡介 SkyWalking 是一個 開源的 APM(Application Performance Monitoring,應用性能監控)和分布式追蹤系統,主要用于監控、追蹤、分析分布式系統中的調用鏈路、性能指標和日志。 它由 Apache 基金會托管,…

【接口自動化測試】---自動化框架pytest

目錄 1、用例運行規則 2、pytest命令參數 3、pytest配置文件 4、前后置 5、斷言 6、參數化---對函數的參數(重要) 7、fixture 7.1、基本用法 7.2、fixture嵌套: 7.3、請求多個fixture: 7.4、yield fixture 7.5、帶參數…

Flink Stream API 源碼走讀 - socketTextStream

概述 本文深入分析了 Flink 中 socketTextStream() 方法的源碼實現,從用戶API調用到最終返回 DataStream 的完整流程。 核心知識點 1. socketTextStream 方法重載鏈 // 用戶調用入口 env.socketTextStream("hostname", 9999)↓ 補充分隔符參數 env.socket…

待辦事項小程序開發

1. 項目規劃功能需求:添加待辦事項標記完成/未完成刪除待辦事項分類或標簽管理(可選)數據持久化(本地存儲)2. 實現功能添加待辦事項:監聽輸入框和按鈕事件,將輸入內容添加到列表。 標記完成/未完…

【C#】Region、Exclude的用法

在 C# 中,Region 和 Exclude 是與圖形編程相關的概念,通常在使用 System.Drawing 命名空間進行 GDI 繪圖時出現。它們主要用于定義和操作二維空間中的區域(幾何區域),常用于窗體裁剪、控件重繪、圖形繪制優化等場景。 …

機器學習 - Kaggle項目實踐(3)Digit Recognizer 手寫數字識別

Digit Recognizer | Kaggle 題面 Digit Recognizer-CNN | Kaggle 下面代碼的kaggle版本 使用CNN進行手寫數字識別 學習到了網絡搭建手法學習率退火數據增廣 提高訓練效果。 使用混淆矩陣 以及對分類出錯概率最大的例子單獨拎出來分析。 最終以99.546%正確率 排在 86/1035 …

新手如何高效運營亞馬遜跨境電商:從傳統SP廣告到DeepBI智能策略

"為什么我的廣告點擊量很高但訂單轉化率卻很低?""如何避免新品期廣告預算被大詞消耗殆盡?""為什么手動調整關鍵詞和出價總是慢市場半拍?""競品ASIN投放到底該怎么做才有效?""有沒有…

【論文閱讀 | CVPR 2024 | UniRGB-IR:通過適配器調優實現可見光-紅外語義任務的統一框架】

論文閱讀 | CVPR 2024 | UniRGB-IR:通過適配器調優實現可見光-紅外語義任務的統一框架?1&&2. 摘要&&引言3.方法3.1 整體架構3.2 多模態特征池3.3 補充特征注入器3.4 適配器調優范式4 實驗4.1 RGB-IR 目標檢測4.2 RGB-IR 語義分割4.3 RGB-IR 顯著目…

Hyperf 百度翻譯接口實現方案

保留 HTML/XML 標簽結構,僅翻譯文本內容,避免破壞富文本格式。采用「HTML 解析 → 文本提取 → 批量翻譯 → 回填」的流程。百度翻譯集成方案:富文本內容翻譯系統 HTML 解析 百度翻譯 API 集成 文件結構 app/ ├── Controller/ │ └──…

字節跳動 VeOmni 框架開源:統一多模態訓練效率飛躍!

資料來源:火山引擎-開發者社區 多模態時代的訓練痛點,終于有了“特效藥” 當大模型從單一語言向文本 圖像 視頻的多模態進化時,算法工程師們的訓練流程卻陷入了 “碎片化困境”: 當業務要同時迭代 DiT、LLM 與 VLM時&#xff0…

配置docker pull走http代理

之前寫了一篇自建Docker鏡像加速器服務的博客,需要用到境外服務器作為代理,但是一般可能沒有境外服務器,只有http代理,所以如果本地使用想走代理可以用以下方式 臨時生效(只對當前終端有效) 設置環境變量…

OpenAI 開源模型 gpt-oss 本地部署詳細教程

OpenAI 最近發布了其首個開源的開放權重模型gpt-oss,這在AI圈引起了巨大的轟動。對于廣大開發者和AI愛好者來說,這意味著我們終于可以在自己的機器上,完全本地化地運行和探索這款強大的模型了。 本教程將一步一步指導你如何在Windows和Linux…

力扣-5.最長回文子串

題目鏈接 5.最長回文子串 class Solution {public String longestPalindrome(String s) {boolean[][] dp new boolean[s.length()][s.length()];int maxLen 0;String str s.substring(0, 1);for (int i 0; i < s.length(); i) {dp[i][i] true;}for (int len 2; len …

Apache Ignite超時管理核心組件解析

這是一個非常關鍵且設計精巧的 定時任務與超時管理組件 —— GridTimeoutProcessor&#xff0c;它是 Apache Ignite 內核中負責 統一調度和處理所有異步超時事件的核心模塊。&#x1f3af; 一、核心職責統一管理所有需要“在某個時間點觸發”的任務或超時邏輯。它相當于 Ignite…