【abp Vnext】下载并运行abp Vnext项目详细教程文档
创始人
2025-05-29 18:56:57

软件环境:电脑需要基础软件环境node.js、npm,这些网上教程很多,请自行百度
mysql安装教程:Mysql 安装以及初次登录修改密码贴
redis安装教程:redis的安装以及客户端的安装详细教程

1.安装Visual Studio 2022

官方下载Professional 2022:https://visualstudio.microsoft.com/zh-hans/vs/
在这里插入图片描述
下载完成后安装:
在这里插入图片描述
点击继续按钮,出现下面截图
在这里插入图片描述
然后勾选(ASP.NET和Web开发和Visual Studio 扩展开发
在这里插入图片描述
在这里插入图片描述

自定义选择安装的位置,然后点击安装
在这里插入图片描述

在这里插入图片描述


1.安装ABP CLI脚手架

在命令行终端中安装 ABP CLI:

dotnet tool install -g Volo.Abp.Cli

如果报错如下,则说明本地的net sdk版本低于7.0
在这里插入图片描述
解决办法
1.官网下载.NET 7.0:https://dotnet.microsoft.com/en-us/download/dotnet/7.0
2.根据电脑系统以及版本号来下载(我的电脑是windows10 x64版本的)
在这里插入图片描述
安装完成后,在终端输入命令验证下,显示version是7,则没问题

dotnet --info

在这里插入图片描述
在终端再次输入如下命令安装 ABP CLI

dotnet tool install -g Volo.Abp.Cli

执行成功后的截图
在这里插入图片描述


2.选择abp框架配置

abp官网:https://abp.io/get-started
根据需求选择对应的配置(我这次选择的多层应用、mvc UI框架、mysql数据库、无移动端)
在这里插入图片描述

然后复制命令
在这里插入图片描述

用cmd弹窗进入到指定的项目文件夹
输入如下命令行

abp new Acme.BookStore -dbms MySQL --tiered --theme basic 

在这里插入图片描述

出现如下,则说明成功
在这里插入图片描述


3.运行abp框架

鼠标双击用vs2022打开

在这里插入图片描述

默认结构
在这里插入图片描述
选择Acme.BookStore.DbMigrator为启动项
在这里插入图片描述

修改数据库配置
Acme.BookStore.AuthServerAcme.BookStore.DbMigratorAcme.BookStore.HttpApi.Host的appsettings.json文件更改为需要连接的mysql数据库,Server是数据库ip、Port是端口、Database是数据库名、Uid是数据库账号、Pwd是数据库密码

在这里插入图片描述
在工具==》NuGet包管理器==》程序包管理器控制台==》默认项目选择EntityFrameworkCore在这里插入图片描述
安装Microsoft.EntityFrameworkCore.Design 包
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意点:
因为在cmd命令窗口输入的如下命令,查询到的版本号为7.0.202

dotnet --version

所以Microsoft.EntityFrameworkCore.Tools包需要降级为7.0.2的版本(先卸载项目自带的7.0.4,然后再安装7.0.2,否则运行项目会报错500.30),如下
在这里插入图片描述

上面安装完成后,在控制台输入如下命令行,生成迁移文件

Add-Migration Init

在这里插入图片描述
跑完再执行迁移指令

 Update-Database

在这里插入图片描述
然后配置启动项,在解决方案Acme.BookStore里,选择配置启动项
在这里插入图片描述
选择多个启动项目,然后更改AuthServer和Host,然后点击应用、确定,最后按Ctrl+F5运行
在这里插入图片描述

然后效果图如下:
在这里插入图片描述


在这里插入图片描述


踩坑点:

1.安装net SDK7.0以前版本需要使用Vs2022版本,则执行迁移会报错

2.因为本地安装的Net SDK7.0.202版本,所以项目Acme.BookStore.EntityFrameworkCore解决方案的NuGet方案需要降低版本为7.0.2版本,否则运行项目会报错500.30

3.官方文档:介绍目录结构作用


项目组织在src和test文件夹中. src文件夹包含实际应用程序,该应用程序基于前面提到的DDD原则进行分层. 下图展示了解决方案的层和项目的依赖关系:

在这里插入图片描述

下面介绍解决方案中的项目及依赖关系

.Domain.Shared 项目

项目包含常量,枚举和其他对象,这些对象实际上是领域层的一部分,但是解决方案中所有的层/项目中都会使用到.

例如 BookType 枚举和 BookConsts 类 (可能是 Book
实体用到的常数字段,像MaxNameLength)都适合放在这个项目中.

该项目不依赖解决方案中的其他项目. 其他项目直接或间接依赖该项目

.Domain 项目

解决方案的领域层. 它主要包含 实体, 集合根, 领域服务, 值类型, 仓储接口 和解决方案的其他领域对象.

例如 Book 实体和 IBookRepository 接口都适合放在这个项目中.

它依赖 .Domain.Shared 项目,因为项目中会用到它的一些常量,枚举和定义其他对象. .Application.Contracts
项目 项目主要包含 应用服务 interfaces 和应用层的 数据传输对象 (DTO). 它用于分离应用层的接口和实现.
这种方式可以将接口项目做为约定包共享给客户端.

例如 IBookAppService 接口和 BookCreationDto 类都适合放在这个项目中.

它依赖 .Domain.Shared 因为它可能会在应用接口和DTO中使用常量,枚举和其他的共享对象.

.Application 项目

项目包含 .Application.Contracts 项目的 应用服务 接口实现.

例如 BookAppService 类适合放在这个项目中.

它依赖 .Application.Contracts 项目, 因为它需要实现接口与使用DTO. 它依赖 .Domain
项目,因为它需要使用领域对象(实体,仓储接口等)执行应用程序逻辑. .EntityFrameworkCore 项目 这是集成EF
Core的项目. 它定义了 DbContext 并实现 .Domain 项目中定义的仓储接口.

它依赖 .Domain 项目,因为它需要引用实体和仓储接口. 只有在你使用了EF Core做为数据库提供程序时,此项目才会可用.
如果选择的是其他数据库提供程序那么项目的名称会改变

.EntityFrameworkCore.DbMigrations 项目

包含解决方案的EF Core数据库迁移. 它有独立的 DbContext 来专门管理迁移.

ABP是一个模块化的框架,理想的设计是让每个模块都有自己的 DbContext 类. 这时用于迁移的 DbContext 就会发挥作用.
它将所有的 DbContext 配置统一到单个模型中以维护单个数据库的模式.
对于更高级的场景,可以程序可以拥有多个数据库(每个数据库有一个或多个模块表)和多个迁移DbContext(每个都维护不同的数据库模式)

需要注意,迁移 DbContext 仅用于数据库迁移,而不在运行时使用.

它依赖 .EntityFrameworkCore 项目,因为它重用了应用程序的 DbContext 配置 . 只有在你使用了EF
Core做为数据库提供程序时,此项目才会可用. 参阅Entity Framework Core迁移指南了解这个项目的详细信息.

.DbMigrator 项目

这是一个控制台应用程序,它简化了在开发和生产环境执行数据库迁移的操作.当你使用它时;

必要时创建数据库(没有数据库时). 应用未迁移的数据库迁移. 初始化种子数据(当你需要时). 这个项目有自己的
appsettings.json 文件. 所以如果要更改数据库连接字符串,请记得也要更改此文件.

初始化种子数据很重要,ABP具有模块化的种子数据基础设施. 种子数据的更多信息,请参阅文档.

虽然创建数据库和应用迁移似乎只对关系数据库有用,但即使你选择NoSQL数据库提供程序(如MongoDB),也会生成此项目.
这时,它会为应用程序提供必要的初始数据.

它依赖 .EntityFrameworkCore.DbMigrations 项目 (针对EF Core),因为它需要访问迁移文件. 它依赖
.Application.Contracts 项目,因为它需要访问权限定义在初始化种子数据时为管理员用户赋予所有权限.

.HttpApi 项目

用于定义API控制器.

大多数情况下,你不需要手动定义API控制器,因为ABP的动态API功能会根据你的应用层自动创建API控制器.
但是,如果你需要编写API控制器,那么它是最合适的地方.

它依赖 .Application.Contracts 项目,因为它需要注入应用服务接口. .HttpApi.Client 项目
定义C#客户端代理使用解决方案的HTTP API项目. 可以将上编辑共享给第三方客户端,使其轻松的在DotNet应用程序中使用你的HTTP
API(其他类型的应用程序可以手动或使用其平台的工具来使用你的API).

ABP有动态 C# API 客户端功能,所以大多数情况下你不需要手动的创建C#客户端代理.

.HttpApi.Client.ConsoleTestApp 项目是一个用于演示客户端代理用法的控制台应用程序.

它依赖 .Application.Contracts 项目,因为它需要使用应用服务接口和DTO.
如果你不需要为API创建动态C#客户端代理,可以删除此项目和依赖项

.Web 项目

包含应用程序的用户界面(UI).如果使用ASP.NET Core MVC UI,
它包括Razor页面,javascript文件,样式文件,图片等…

包含应用程序主要的 appsettings.json 配置文件,用于配置数据库连接字符串和应用程序的其他配置

依赖 .HttpApi 项目,因为UI层需要使用解决方案的API和应用服务接口. 如果查看 .Web.csproj 源码, 你会看到对
.Application 和 .EntityFrameworkCore.DbMigrations 项目的引用.

在编写UI层时实际上不需要这些引用. 因为UI层通常不依赖于EF Core或应用层的实现.
这个启动模板已经为分层部署做好了准备,API层托管在不同与UI层的服务器中.

但是如果你不选择 --tiered 选项, .Web项目会有这些引用,以便能够将Web,Api和应用层托管在单个应用程序站点.

你可以在表示层中使用领域实体和仓储,但是根据DDD的理论,这被认为是一种不好的做法.

Test 项目

解决方案有多个测试项目,每一层都会有一个:

.Domain.Tests 用于测试领域层. .Application.Tests 用于测试应用层.
.EntityFrameworkCore.Tests 用于测试EF Core配置与自定义仓储. .Web.Tests
用于测试UI(适用于ASP.NET Core MVC UI). .TestBase 所有测试项目的基础(共享)项目. 此外,
.HttpApi.Client.ConsoleTestApp
是一个控制台应用程序(不是自动化测试项目),它用于演示.Net应用程序中HTTP API的用法.

测试项目是用于做集成测试的:

它完全集成到ABP框架和应用程序的所有服务. 如果数据库提供程序是EF
Core,测试项目会使用SQLite内存数据库,如果是MongoDB,它使用Mongo2Go库.
授权被禁用,任何的应用服务都可以在测试中轻松调用.
你依然可以编写单元测试,只不过它很难写(因为你需要准备mock/fake对象),但它的运行速度更快(因为只测试单个类并跳过所有初始化过程).

相关内容

热门资讯

被利空突袭后,A股今天稳住了吗... 6月13日,市场全天震荡调整,创业板指、深成指均跌超1%。截至收盘,沪指跌0.75%,深成指跌1.1...
风暴前夜…… 风暴前夜…… 风... 有多少资讯是真正有用的?FinGraph是中文财经世界唯一一家每日图形化早晚专栏,为专注于全球市场的...
ETF今日收评 | 标普油气E... 市场全天震荡调整,创业板指、深成指均跌超1%。从板块来看,油气板块全天强势,核污染防治概念逆势爆发,...
曝杜兰特预计下周被交易 马刺领... 北京时间6月13日,据美国媒体消息,杜兰特预计将在下周被太阳队交易出去,目前太阳队正在和多支对杜兰特...
AI赛道再融资潮持续!地平线机... 文|财华社 香港市场凭借充裕的国际资金和灵活的再融资机制,成为企业融资的"黄金通道"。随着市场回暖...
恒勃股份2025年第一季经营现... 瑞财经 钟鸣辰近日,恒勃股份(SZ301225)发布2025年一季报。 报告期间,恒勃股份公司营业...
投资者急问Labubu,20余... 上证报中国证券网讯 一只九齿小怪兽的资本旋风,正席卷沪深交易所互动平台。 近日,LABUBU作为泡泡...
Felicis 完成9亿美元第... 投资界(ID:pedaily2012)6月13日消息,Felicis Ventures宣布完成其规模...
商务部:今年以来中国外贸在复杂... 6月12日电 商务部12日召开例行新闻发布会,商务部新闻发言人何亚东在会上表示,今年以来,中国外贸在...
商务部将修订并扩大《鼓励外商投... 海报新闻记者 姜雪颖 孙佃潇 北京报道 多年来,中国与跨国公司的合作积累了诸多成果。6月13日,商务...
机器人猛扇朱啸虎 机器人猛扇朱... 人形机器人赛道,不仅没被朱啸虎的退出言论打倒,反而还成了年内AI圈的投融资新重点。据字母榜(ID:w...
A股低开低走,三大股指低收:石... A股三大股指6月13日集体低开。早盘两市低开低走,半日成交超9100亿元。午后市场依旧低迷,股指维持...
不到12小时,以色列收到回礼,... 偷袭完伊朗,不到12小时,以色列就收到了回礼,城市特拉维夫遭袭,10处核设施被炸。13日凌晨,以色列...
以军空袭伊朗核设施及军事目标!... 据央视新闻最新报道,当地时间12日凌晨,以色列对伊朗发动袭击。伊朗首都德黑兰听到连续爆炸声,目前伊方...
6月18日前必须“交卷”!券商... 21 世纪经济报道记者从券商处了解到,中国证券业协会面向券商启动 “证券公司支持上市公司并购重组能力...
企业负责人回顾“科八条”,未盈... 21世纪经济报道记者 黎雨辰 北京报道厚积薄发的硬科技企业,是服务国家战略、实现高水平科技自立自强的...
90亿美元,“IP祖师爷”买了... 90 亿美元,这是一个庞大的数字,仿佛是一枚沉重的“子弹”。而“IP 祖师爷”以如此巨额的资金买下了...
回笼资金4.79亿元!万科完成... 6月12日,万科A公告称,公司已完成A股库存股的出售,出售期间为2025年6月10日至6月12日,出...
蚂蚁集团,法人代表变更! 蚂蚁... 据上证报,6月13日,国家工商登记信息显示,蚂蚁科技集团股份有限公司(蚂蚁集团)的法定代表人由井贤栋...
苹果应对特朗普关税:把97%的... 苹果为应对特朗普关税举措,采取了将 97%的“印度产手机”运往美国的策略。这一行动显示出苹果在贸易局...
咖啡战争的下半场:库迪用1亿级... 单平台,1亿单。中国饮品品牌又创造了一个历史。近日,库迪咖啡在京东外卖平台销量破亿,这不仅是中国饮品...
沙特房产,下一个创富神话? 沙... 作者 | 李小天2023年10月,准备再度开启创业征程的许超,跟随霞光社中东考察项目来到沙特首都利雅...
中曼石油2025年6月13日涨... 2025年6月13日,中曼石油(sh603619)触及涨停,涨停价20.53元,涨幅10.02%,总...
通化金马:6月12日融资买入7... 证券之星消息,6月12日,通化金马(000766)融资买入7010.25万元,融资偿还1.11亿元,...
新易盛:6月12日融资买入8.... 证券之星消息,6月12日,新易盛(300502)融资买入8.37亿元,融资偿还9.15亿元,融资净卖...
太保产险再收百万罚款,新掌门人... 百万罚单如影随形,太保产险的新掌门人俞斌刚上任就遭遇当头一棒。在中国太保集团铁腕改革的浪潮下,无论是...
国际油价大涨,标普油气ETF涨... 每经记者:叶峰 每经编辑:肖芮冬 6月13日亚洲交易时段,国际油价涨幅扩大,WTI原油期货一度涨超7...
李国庆发文:和俞渝财产分割达成... 红星资本局6月13日消息,今日,当当网创始人李国庆在朋友圈发文称,“我和俞渝女士已于2023年解除了...
腾讯音乐牵手喜马拉雅,应对共同... 4次IPO折戟,喜马拉雅90多亿卖身腾讯音乐。文|《中国企业家》记者 赵东山编辑|张晓迪头图来源|视...
航天军工板块午后走高,航空航天... 6月13日,市场震荡调整,深成指、创业板指均跌1%,航天军工板块午后持续走高,国证航天航空行业指数(...