diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs index f0ca14657b..b4d5d4499c 100644 --- a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Builder/AbpApplicationBuilderExtensions.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using System.Threading.Tasks; using JetBrains.Annotations; using Microsoft.AspNetCore.Hosting; @@ -9,8 +10,10 @@ using Microsoft.AspNetCore.StaticAssets; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Volo.Abp; +using Volo.Abp.AspNetCore; using Volo.Abp.AspNetCore.Auditing; using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.AspNetCore.Security; @@ -184,6 +187,27 @@ public static class AbpApplicationBuilderExtensions // https://github.com/dotnet/aspnetcore/issues/59673 app.UseStaticFiles(); + if (!staticAssetsManifestPath.IsNullOrWhiteSpace()) + { + app.ApplicationServices.GetRequiredService>().LogWarning( + $"The staticAssetsManifestPath({staticAssetsManifestPath}) parameter your provided in MapAbpStaticAssets method is ignored in development mode."); + } + + var blazorClientProjectPaths = new[] + { + Path.Combine(AppContext.BaseDirectory, $"{environment.ApplicationName}.Client.staticwebassets.endpoints.json"), + Path.Combine(AppContext.BaseDirectory, $"{environment.ApplicationName.RemovePostFix(".Host")}.Blazor.staticwebassets.endpoints.json"), + }; + + var blazorClientStaticAssetsManifest = blazorClientProjectPaths.FirstOrDefault(File.Exists); + if (blazorClientStaticAssetsManifest != null) + { + // We have a blazor client project and we need to map the static assets from the client project. + var blazorHostStaticAssetsManifest = Path.Combine(AppContext.BaseDirectory, $"{environment.ApplicationName}.staticwebassets.endpoints.json"); + File.Copy(blazorClientStaticAssetsManifest, blazorHostStaticAssetsManifest, true); + return endpoints.MapStaticAssets(blazorHostStaticAssetsManifest); + } + // Volo.Abp.AspNetCore.staticwebassets.endpoints.json is an empty file. Just compatible with the return type of MapAbpStaticAssets. var tempStaticAssetsManifestPath = Path.Combine(AppContext.BaseDirectory, "Volo.Abp.AspNetCore.staticwebassets.endpoints.json"); if (!File.Exists(tempStaticAssetsManifestPath))