ABP框架项目中创建模块化模块并关联主项目的步骤咨询
ABP 框架创建自定义模块并关联主项目核心操作步骤
前置准备
- 确保已安装 ABP CLI 工具,未安装可执行命令:
dotnet tool install -g Volo.Abp.Cli - 提前准备好可正常运行的 ABP 主项目,如需新建测试主项目可执行命令:
abp new 主项目名称
第一步:创建独立 ABP 模块
- 新建空文件夹作为模块根目录,命令行进入该目录
- 执行模块创建命令,替换
你的模块名为实际业务名称(比如ProductManagement):abp new 你的模块名 --template module --no-ui --skip-db-migrations- 不需要前端页面的场景保留
--no-ui参数,需要前端相关代码直接去掉即可 - 不需要初始化数据库迁移可保留
--skip-db-migrations参数,后续开发完业务再生成迁移即可
- 不需要前端页面的场景保留
- 生成的模块结构中,核心入口是各个分层项目下的
xxxModule.cs类,所有模块的初始化配置都在该类中定义
第二步:将模块关联到主项目
根据使用场景选择以下两种关联方式即可:
方式1:本地项目引用(适合模块开发阶段,需频繁修改的场景)
- 右键主项目解决方案,选择「添加现有项目」,将模块的所有分层项目(Domain、Application、EntityFrameworkCore等)全部添加到主解决方案中
- 打开主项目的启动模块类(一般是
xxxWebModule.cs或xxxHttpApiHostModule.cs),在类顶部添加模块依赖特性,示例:
[DependsOn( typeof(ProductManagementDomainModule), typeof(ProductManagementApplicationModule), typeof(ProductManagementEntityFrameworkCoreModule) )] public class MyShopWebModule : AbpModule { // 原有项目配置代码保持不变 }
- 如果需要调用模块的对外接口,额外添加模块的
HttpApi、HttpApi.Client项目的引用和对应依赖即可 - 模块需要操作数据库的场景,在主项目的EF Core配置代码中添加模块的数据库配置:
options.AddProductManagement();,执行主项目的数据库迁移命令即可把模块的表同步到数据库
方式2:NuGet包引用(适合模块稳定后跨项目复用的场景)
- 将开发完成的模块打包为NuGet包,发布到私有或公共NuGet源
- 主项目直接安装对应模块的NuGet包,和方式1一样在启动模块添加
[DependsOn]依赖配置即可,不需要额外添加项目引用
验证关联结果
- 启动主项目,打开Swagger页面可以看到模块的接口已经被自动加载,说明模块关联成功
- 也可以在主项目的启动日志中搜索模块名称,出现模块初始化完成的日志即可确认加载正常
注意事项
- 模块的ABP版本必须和主项目的ABP版本完全一致,否则会出现依赖冲突导致模块加载失败
- 模块如果有本地化资源,需要在主项目的本地化配置中添加模块的本地化资源路径,否则会出现找不到翻译的问题
- 模块配置的权限、菜单等内容会自动合并到主项目中,不需要额外手动同步
内容的提问来源于stack exchange,提问作者heba
相关产品推荐
相关产品推荐

