C Sharp - Make Onion Framework Microservice

Here is the source code for CreateMS_Solution.Bat

April 30, 2024

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
rem
rem - create a new microservice
rem
rem format
rem createMS MSName
rem
rem where
rem MSName is the microservice name. No spaces. (UpperCamelCase)
rem

rem create the solution
md %1Onion
cd %1Onion
dotnet new sln -n %1Onion



rem
rem create a shared project
rem hmm... or should we assume there will be a nuget library here
rem
dotnet new classlib -n %1.Shared
dotnet sln %1Onion.sln add %1.Shared/"%1.Shared.csproj"
cd %1.Shared
dotnet add package Microsoft.Extensions.Logging --version 9.0.0-preview.3.24172.9
dotnet add package Microsoft.Extensions.Logging.Abstractions --version 9.0.0-preview.3.24172.9
dotnet add package Microsoft.Extensions.Logging.Console --version 9.0.0-preview.3.24172.9

cd ..


rem
rem create the layer 1 - domain layer
rem
dotnet new classlib -n "1 - %1.Domain"
dotnet sln %1Onion.sln add "1 - %1.Domain"/"1 - %1.Domain.csproj"

cd 1 - %1.Domain
rem add nuget packages
rem 4/30/2024 - removed
rem dotnet add package System.ComponentModel.Annotations --version 5.0.0

rem create subfolders
md Entities
md Repositories

cd ..




rem
rem create the layer 2 - application layer
rem
dotnet new classlib -n "2 - %1.Application"
dotnet sln %1Onion.sln add "2 - %1.Application"/"2 - %1.Application.csproj"
cd 2 - %1.Application

rem add nuget packages
dotnet add package AutoMapper --version 13.0.1
dotnet add package FluentValidation --version 11.9.0

rem update the csProj file to add reference to other libraries
dotnet add reference "..\1 - %1.Domain\1 - %1.Domain.csproj"
dotnet add reference "..\%1.Shared\%1.Shared.csproj"

rem create subfolders
md Dtos
md Mapping
md Services


cd ..

rem
rem create the layer 3 - Infrastructure layer
rem
dotnet new classlib -n "3 - %1.Infrastructure"
dotnet sln %1Onion.sln add "3 - %1.Infrastructure"/"3 - %1.Infrastructure.csproj"
cd 3 - %1.Infrastructure

rem add packages
dotnet add package Microsoft.EntityFrameworkCore --version 9.0.0-preview.2.24128.4
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 9.0.0-preview.2.24128.4
dotnet add package Microsoft.Extensions.Logging --version 9.0.0-preview.3.24172.9
dotnet add package Microsoft.Extensions.Logging.Debug --version 9.0.0-preview.2.24128.5

rem update the csProj file to add reference to other libraries
dotnet add reference "..\1 - %1.Domain\1 - %1.Domain.csproj"
dotnet add reference "..\%1.Shared\%1.Shared.csproj"

md Data
md Repositories

cd ..



rem
rem create the layer 4 - API layer
rem
dotnet new classlib -n "4 - %1.Api"
dotnet sln %1Onion.sln add "4 - %1.Api"/"4 - %1.Api.csproj"
cd 4 - %1.Api

rem add packages
dotnet add package Microsoft.AspNetCore.Mvc.DataAnnotations --version 2.2.0
dotnet add package Microsoft.AspNetCore.Mvc.NewtonsoftJson --version 8.0.3
dotnet add package Microsoft.Extensions.Logging.Console --version 9.0.0-preview.3.24172.9
dotnet add package Microsoft.Extensions.Logging.Debug --version 9.0.0-preview.2.24128.5
dotnet add package Serilog.AspNetCore --version 8.0.2-dev-00338
dotnet add package Serilog.Enrichers.Environment --version 3.0.0-dev-00806
dotnet add package Serilog.Enrichers.Process --version 2.0.2
dotnet add package Serilog.Enrichers.Thread --version 3.2.0-dev-00756
dotnet add package Swashbuckle.AspNetCore --version 6.5.0
dotnet add package Swashbuckle.AspNetCore.Annotations --version 6.5.0
dotnet add package Swashbuckle.AspNetCore.Filters --version 8.0.1

rem update the csProj file to add reference to other libraries
dotnet add reference "..\2 - %1.Application\2 - %1.Application.csproj"
dotnet add reference "..\3 - %1.Infrastructure\3 - %1.Infrastructure.csproj"
dotnet add reference "..\%1.Shared\%1.Shared.csproj"

md Controllers

cd ..


cd ..