如何通过.Net Core Cli 创建多项目Solution
创建.Net Core Web 项目
本文将介绍如何通过PowerShell和.Net Core Cli 创建一个多项目的Solution。主要面向使用VS Code,不打算安装Visual Studio的小伙伴们。
实现目标
创建一个体育新闻发布系统的Solution— SportsNews,项目描述,类型和项目间的依赖关系如下:
- SportsNews.Web Web项目,提供后台管理页面和其他客户端WebApi访问接口。
- SportsNews.Business 封装新闻发布管理的所有业务逻辑。
- SportsNews.Data 封装ORM工具,例如Dapper或EF Core。
- SportsNews.Entity 定义项目中所有相关实体类的。
- SportsNews.Utils 封装第三方类库,如NPOI或Mail等。
- SportsNews.ETL 封装每天定时执行的各种数据同步任务。
项目 | 类型 | 依赖 |
---|---|---|
SportsNews.Web | mvc | SportsNews.Business SportsNews.Data SportsNews.Entity |
SportsNews.Business | classlib | SportsNews.Data SportsNews.Entity SportsNews.Utils |
SportsNews.Data | classlib | SportsNews.Entity |
SportsNews.Entity | classlib | |
SportsNews.Utils | classlib | |
SportsNews.ETL | console | SportsNews.Business SportsNews.Data SportsNews.Entity |
项目创建
准备
- 启动Powershell
- 创建Solution目录SportsNews
- 进入SportsNews目录
mkdir SportsNews
cd SportsNews
创建Solution的sln文件
dotnet new sln
创建所有项目
本文只是通过创建该项目,展示通过命令行创建多项目Solution的过程。因此在每个项目创建上,都采用了比较简化的方式,小伙伴们可以根据自己需要进行剪裁。也可以参照微软Net Core Cli 官网创建需要的其他项目如WPF,WinForm等。
dotnet new mvc -o SportsNews.Web
dotnet new classlib -o SportsNews.Business
dotnet new classlib -o SportsNews.Data
dotnet new classlib -o SportsNews.Entity
dotnet new classlib -o SportsNews.Utils
dotnet new console -o SportsNews.ETL
将所有项目添加到当前Solution中
dotnet sln add ./SportsNews.Web/SportsNews.Web.csproj
dotnet sln add ./SportsNews.Business/SportsNews.Business.csproj
dotnet sln add ./SportsNews.Data/SportsNews.Data.csproj
dotnet sln add ./SportsNews.Entity/SportsNews.Entity.csproj
dotnet sln add ./SportsNews.Utils/SportsNews.Utils.csproj
dotnet sln add ./SportsNews.ETL/SportsNews.ETL.csproj
设置SportsNews.Web项目的依赖项
dotnet add ./SportsNews.Web/SportsNews.Web.csproj reference ./SportsNews.Business/SportsNews.Business.csproj
dotnet add ./SportsNews.Web/SportsNews.Web.csproj reference ./SportsNews.Data/SportsNews.Data.csproj
dotnet add ./SportsNews.Web/SportsNews.Web.csproj reference ./SportsNews.Entity/SportsNews.Entity.csproj
设置SportsNews.Business项目的依赖项
dotnet add ./SportsNews.Business/SportsNews.Business.csproj reference ./SportsNews.Data/SportsNews.Data.csproj
dotnet add ./SportsNews.Business/SportsNews.Business.csproj reference ./SportsNews.Entity/SportsNews.Entity.csproj
dotnet add ./SportsNews.Business/SportsNews.Business.csproj reference ./SportsNews.Utils/SportsNews.Utils.csproj
设置SportsNews.Data项目的依赖项
dotnet add ./SportsNews.Data/SportsNews.Data.csproj reference ./SportsNews.Entity/SportsNews.Entity.csproj
设置SportsNews.ETL项目的依赖项
dotnet add ./SportsNews.ETL/SportsNews.ETL.csproj reference ./SportsNews.Business/SportsNews.Business.csproj
dotnet add ./SportsNews.ETL/SportsNews.ETL.csproj reference ./SportsNews.Data/SportsNews.Data.csproj
dotnet add ./SportsNews.ETL/SportsNews.ETL.csproj reference ./SportsNews.Entity/SportsNews.Entity.csproj
构建项目
dotnet build .\SportsNews.sln
如上图的执行结果,根据项目依赖顺序,生成的DLL文件顺序为:
- SportsNews.Entity.dll
- SportsNews.Utils.dll
- SportsNews.Data.dll
- SportsNews.ETL.dll
- SportsNews.Business.dll
- SportsNews.Web.dll 和 SportsNews.Web.Views.dll
启动SportsNews.Web项目
dotnet run --project ./SportsNews.Web/SportsNews.Web.csproj
启动SportsNews.ETL项目
dotnet run --project ./SportsNews.ETL/SportsNews.ETL.csproj