精简版Abp开发教程 - 第一章: 创建解决方案
前言
基于官方教程,前前后后走了N遍。好多地方不清楚,为什么会有这效果,有一堆的问号。哪些是必须的?哪些是不必须的?
经过N长时间的研究,自己也搭建多无数个精简的Abp解决方案。在这过程中,出现一堆莫名其妙的问题。
有幸,最终摸索出可以通过Swagger可以调用数据库的项目。所以决定写下操作过程,加以巩固,并共勉之。
创建解决方案及项目
创建名为 Acme.BookStore
的新解决方案。基于Abp官方教程中领域分层,分别创建以下项目:
- .Net Core类库项目
Acme.BookStore.Domain
Acme.BookStore.Domain.Shared
Acme.BookStore.Application
Acme.BookStore.Application.Contracts
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.EntityFrameworkCore.DbMigrations
- Asp.Net Core Web应用程序
Acme.BookStore.WebApi
(空白模版)
添加项目引用
Acme.BookStore.Application
Acme.BookStore.Domain
Acme.BookStore.Application.Contracts
Acme.BookStore.Application.Contracts
Acme.BookStore.Domain.Shared
Acme.BookStore.Domain
Acme.BookStore.Domain.Shared
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.Domain
Acme.BookStore.EntityFrameworkCore.DbMigrations
Acme.BookStore.EntityFrameworkCore
Acme.BookStore.WebApi
Acme.BookStore.Application.Application
Acme.BookStore.EntityFrameworkCore.DbMigrations
添加程序包引用
Acme.BookStore.Application
Volo.Abp.Ddd.Application
Volo.Abp.AutoMapper
Acme.BookStore.Application.Contracts
Volo.Abp.Ddd.Application.Contracts
Acme.BookStore.Domain
Volo.Abp.Ddd.Domain
Acme.BookStore.Domain.Shared
Volo.Abp.Core
Acme.BookStore.EntityFrameworkCore
Volo.Abp.EntityFrameworkCore.SqlServer
Acme.BookStore.EntityFrameworkCore.DbMigrations
Microsoft.EntityFrameworkCore.Tools
Acme.BookStore.WebApi
Swashbuckle.AspNetCore
Volo.Abp.AspNetCore.Mvc
Volo.Abp.Autofac
快速项目、程序包引用
- 双击
Acme.BookStore.Application
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.AutoMapper" Version="3.2.1" />
<PackageReference Include="Volo.Abp.Ddd.Application" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Application.Contracts\Acme.BookStore.Application.Contracts.csproj" />
<ProjectReference Include="..\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.Application.Contracts
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.Domain
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain.Shared\Acme.BookStore.Domain.Shared.csproj" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.Domain.Shared
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Core" Version="3.2.1" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.EntityFrameworkCore
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Domain\Acme.BookStore.Domain.csproj" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.EntityFrameworkCore.DbMigrations
代码替换:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.EntityFrameworkCore\Acme.BookStore.EntityFrameworkCore.csproj" />
</ItemGroup>
</Project>
- 双击
Acme.BookStore.WebApi
代码替换:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="3.2.1" />
<PackageReference Include="Volo.Abp.Autofac" Version="3.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Acme.BookStore.Application\Acme.BookStore.Application.csproj" />
<ProjectReference Include="..\Acme.BookStore.EntityFrameworkCore.DbMigrations\Acme.BookStore.EntityFrameworkCore.DbMigrations.csproj" />
</ItemGroup>
</Project>
创建Module类
分别对创建的项目,统一添加以Module
结尾类名称(可以重命名Class1.cs)
Acme.BookStore.Application
BookStoreApplicationModule.cs
Acme.BookStore.Application.Contracts
BookStoreApplicationContractsModule.cs
Acme.BookStore.Domain
BookStoreDomainModule.cs
Acme.BookStore.Domain.Shared
BookStoreDomainSharedModule.cs
Acme.BookStore.EntityFrameworkCore
BookStoreEntityFrameworkCoreModule.cs
Acme.BookStore.EntityFrameworkCore.DbMigrations
BookStoreEntityFrameworkCoreDbMigrationsModule.cs
Acme.BookStore.WebApi
BookStoreWebApiModule.cs
各个项目中创建Module类完后,都继承AbpModule
。