For not trivial WebApps, multiple projects are needed. Here is an example of how to create all projects with the dotnet
CLI and add them to a single solution.
Create the projects:
mkdir Teach
cd Teach
dotnet new angular -o Teach.Web
dotnet new nunit -o Teach.Web.Tests
dotnet new classlib -f net6.0 -o Teach.Business
dotnet new nunit -f net6.0 -o Teach.Business.Tests
dotnet new classlib -f net6.0 -o Teach.DataAccess
dotnet new nunit -o Teach.DataAccess.Tests
dotnet new classlib -f net6.0 -o Teach.Domain
Add references and a package to Teach.Web
Domain and DataAccess are needed for dependency injection:
cd Teach.Web
dotnet add reference ../Teach.Business/Teach.Business.csproj
dotnet add reference ../Teach.Domain/Teach.Domain.csproj
dotnet add reference ../Teach.DataAccess/Teach.DataAccess.csproj
dotnet add package Microsoft.Extensions.Identity.Core
Add references and a package to Teach.Business
:
cd ../Teach.Business
dotnet add reference ../Teach.Domain/Teach.Domain.csproj
dotnet add reference ../Teach.DataAccess/Teach.DataAccess.csproj
dotnet add package Microsoft.Extensions.Identity.Core
cd ../Teach.DataAccess
dotnet add reference ../Teach.Domain/Teach.Domain.csproj
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
An alternative to SqlServer is
dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Microsoft.EntityFrameworkCore.Relational
cd ../Teach.Web.Tests
dotnet add reference ../Teach.Web/Teach.Web.csproj
dotnet add package Moq
cd ../Teach.Business.Tests
dotnet add reference ../Teach.Business/Teach.Business.csproj
dotnet add package Moq
cd ../Teach.DataAccess.Tests
dotnet add reference ../Teach.DataAccess/Teach.DataAccess.csproj
dotnet add package Moq
Now create the solution and add projects:
cd ..
dotnet new sln -n Teach
dotnet sln add Teach.Web/Teach.Web.csproj
dotnet sln add Teach.Business/Teach.Business.csproj
dotnet sln add Teach.DataAccess/Teach.DataAccess.csproj
dotnet sln add Teach.Domain/Teach.Domain.csproj
dotnet sln add Teach.Web.Tests/Teach.Web.Tests.csproj
dotnet sln add Teach.Business.Tests/Teach.Business.Tests.csproj
dotnet sln add Teach.DataAccess.Tests/Teach.DataAccess.Tests.csproj
Add gitignore file and build the solution:
dotnet new gitignore
dotnet build
Start the project:
dotnet run --project .\Teach.Web\Teach.Web.csproj