精簡版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


至此一個精簡的Abp解決方案已完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM