From bccfaaaa5b7b92ab1d760d017773f61d960197f6 Mon Sep 17 00:00:00 2001 From: real-zony Date: Wed, 5 Oct 2022 21:10:15 +0800 Subject: [PATCH] feat: Integrated SPA resources with ASP.NET Core. --- .gitignore | 2 + ZonyLrcTools.sln | 3 -- src/ZonyLrcTools.LocalServer/Program.cs | 48 +++++++++++++------ .../Properties/launchSettings.json | 1 - .../ZonyLrcTools.LocalServer.csproj | 13 +++-- 5 files changed, 43 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 4cd989e..03c7e27 100644 --- a/.gitignore +++ b/.gitignore @@ -450,3 +450,5 @@ fabric.properties .idea/ /.idea /src/ZonyLrcTools.Cli/TempFiles/ + +src/ZonyLrcTools.LocalServer/UiStaticResources/* \ No newline at end of file diff --git a/ZonyLrcTools.sln b/ZonyLrcTools.sln index 1cade50..59ba155 100644 --- a/ZonyLrcTools.sln +++ b/ZonyLrcTools.sln @@ -6,9 +6,6 @@ MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C29FB05C-54B1-4020-94D2-87E192EB2F98}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{AF8ADB2F-E46C-4DEE-8316-652D9FE1A69B}" - ProjectSection(SolutionItems) = preProject - tests\.gitignore = tests\.gitignore - EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZonyLrcTools.Cli", "src\ZonyLrcTools.Cli\ZonyLrcTools.Cli.csproj", "{55D74323-ABFA-4A73-A3BF-F3E8D5DE6DE8}" EndProject diff --git a/src/ZonyLrcTools.LocalServer/Program.cs b/src/ZonyLrcTools.LocalServer/Program.cs index b9baca1..9144d52 100644 --- a/src/ZonyLrcTools.LocalServer/Program.cs +++ b/src/ZonyLrcTools.LocalServer/Program.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using ZonyLrcTools.LocalServer; var app = RegisterAndConfigureServices(); @@ -12,25 +13,42 @@ async Task ListenServices() WebApplication? RegisterAndConfigureServices() { var builder = WebApplication.CreateBuilder(args); - -// Add services to the container. + builder.WebHost.ConfigureKestrel(k => k.ListenAnyIP(50002)); builder.Services.AddControllers(); -// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); - builder.Services.AddSwaggerGen(); - var app = builder.Build(); - -// Configure the HTTP request pipeline. - if (app.Environment.IsDevelopment()) + var insideApp = builder.Build(); + insideApp.UseSpaStaticFiles(new StaticFileOptions { - app.UseSwagger(); - app.UseSwaggerUI(); + RequestPath = "", + FileProvider = new Microsoft.Extensions.FileProviders + .ManifestEmbeddedFileProvider( + typeof(Program).Assembly, "UiStaticResources" + ) + }); + + insideApp.UseAuthorization(); + insideApp.MapControllers(); + insideApp.Lifetime.ApplicationStarted.Register(OpenBrowser); + + return insideApp; +} + +void OpenBrowser() +{ + const string url = "http://localhost:50002/index.html"; + + if (OperatingSystem.IsWindows()) + { + Process.Start("explorer.exe", url); + } + else if (OperatingSystem.IsMacOS()) + { + Process.Start("open", url); + } + else if (OperatingSystem.IsLinux()) + { + Process.Start("xdg-open", url); } - - app.UseAuthorization(); - app.MapControllers(); - - return app; } \ No newline at end of file diff --git a/src/ZonyLrcTools.LocalServer/Properties/launchSettings.json b/src/ZonyLrcTools.LocalServer/Properties/launchSettings.json index 4621ca5..1b34c0f 100644 --- a/src/ZonyLrcTools.LocalServer/Properties/launchSettings.json +++ b/src/ZonyLrcTools.LocalServer/Properties/launchSettings.json @@ -5,7 +5,6 @@ "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, - "launchUrl": "swagger", "applicationUrl": "http://localhost:50002", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" diff --git a/src/ZonyLrcTools.LocalServer/ZonyLrcTools.LocalServer.csproj b/src/ZonyLrcTools.LocalServer/ZonyLrcTools.LocalServer.csproj index 4329fec..f1d2899 100644 --- a/src/ZonyLrcTools.LocalServer/ZonyLrcTools.LocalServer.csproj +++ b/src/ZonyLrcTools.LocalServer/ZonyLrcTools.LocalServer.csproj @@ -4,23 +4,26 @@ net6.0 enable enable + true + + - - + + - - - + + +