Last active
October 10, 2026 14:23
-
-
Save sheepla/dbdfb5a10f6d9afd3e9521ef6aaa45f0 to your computer and use it in GitHub Desktop.
ASP.NET CoreでVertical Slice ArchitectureのWebアプリを新しく作るやつ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env dotnet | |
| #:package ProcessX@1.5.6 | |
| using Cysharp.Diagnostics; | |
| using Zx; | |
| // ----------------------------------------------------- | |
| // Configuration | |
| // ----------------------------------------------------- | |
| var appName = "VsaTemplate"; | |
| var authFeatureProjectName = $"{appName}.Features.Auth"; | |
| var usersFeatureProjectName = $"{appName}.Features.Users"; | |
| var authFeatureTestsProjectName = $"{appName}.Features.Auth.Tests"; | |
| var usersFeatureTestsProjectName = $"{appName}.Features.Users.Tests"; | |
| var dbProjectName = $"{appName}.Infrastructure.Database"; | |
| var identityProjectName = $"{appName}.Infrastructure.Identity"; | |
| var emailProjectName = $"{appName}.Infrastructure.Email"; | |
| var jobsProjectName = $"{appName}.Infrastructure.Jobs"; | |
| var aspireHostProjectName = $"{appName}.AppHost"; | |
| await $"dotnet tool install csharpier"; | |
| await $"dotnet tool install aspire.cli"; | |
| await "dotnet new globaljson"; | |
| await "dotnet new gitignore"; | |
| await "dotnet new tool-manifest"; | |
| await "dotnet new sln"; | |
| await $"dotnet new webapi -o src/{appName}"; | |
| await $"dotnet new aspire-apphost -o src/{aspireHostProjectName}"; | |
| await $"dotnet new classlib -o src/{authFeatureProjectName}"; | |
| await $"dotnet new classlib -o src/{usersFeatureProjectName}"; | |
| await $"dotnet new xunit -o tests/{usersFeatureTestsProjectName}"; | |
| await $"dotnet new xunit -o tests/{authFeatureTestsProjectName}"; | |
| await $"dotnet new classlib -o src/{dbProjectName}"; | |
| await $"dotnet new classlib -o src/{identityProjectName}"; | |
| await $"dotnet new classlib -o src/{emailProjectName}"; | |
| await $"dotnet new classlib -o src/{jobsProjectName}"; | |
| await $"dotnet sln add src/{authFeatureProjectName}"; | |
| await $"dotnet sln add src/{usersFeatureProjectName}"; | |
| await $"dotnet sln add src/{dbProjectName}"; | |
| await $"dotnet sln add src/{identityProjectName}"; | |
| await $"dotnet sln add src/{emailProjectName}"; | |
| await $"dotnet sln add src/{jobsProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{authFeatureProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{usersFeatureProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{dbProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{identityProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{emailProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{jobsProjectName}"; | |
| await $"dotnet add tests/{authFeatureTestsProjectName} reference src/{authFeatureProjectName}"; | |
| await $"dotnet add tests/{usersFeatureTestsProjectName} reference src/{usersFeatureProjectName}"; | |
| await $"dotnet add src/{appName} reference src/{aspireHostProjectName}"; | |
| foreach ( | |
| var package in new string[] | |
| { | |
| "Cortex.Mediator", | |
| "AxisEndpoints", | |
| "AxisEndpoints.Extensions.CsvHelper", | |
| "Serilog", | |
| "Serilog.Sinks.Console", | |
| } | |
| ) | |
| { | |
| await $"dotnet add src/{appName} package {package}"; | |
| } | |
| foreach ( | |
| var package in new string[] | |
| { | |
| "Microsoft.EntityFrameworkCore", | |
| "NpgSql.EntityFrameworkCore.PostgreSQL", | |
| } | |
| ) | |
| { | |
| await $"dotnet add src/{dbProjectName} package {package}"; | |
| } | |
| foreach ( | |
| var package in new string[] { "FluentEmail.Core", "FluentEmail.Smtp", "FluentEmail.Razor" } | |
| ) | |
| { | |
| await $"dotnet add src/{dbProjectName} package {package}"; | |
| } | |
| foreach (var package in new string[] { "Microsoft.AspNetCore.Identity" }) | |
| { | |
| await $"dotnet add src/{identityProjectName} package {package}"; | |
| } | |
| foreach (var package in new string[] { "TickerQ" }) | |
| { | |
| await $"dotnet add src/{jobsProjectName} package {package}"; | |
| } | |
| Directory.CreateDirectory(Path.Combine("src", appName, "Middlewares")); | |
| Directory.CreateDirectory(Path.Combine("src", appName, "Behaviors")); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment