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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…