From 96699c8edc313ba13144d6a1c07da24afc370e35 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 22 Sep 2025 16:51:56 +0800 Subject: [PATCH] Workaround for .NET 10 RC1 embedded file provider issue Adds a temporary fix for a known issue with Microsoft.Extensions.FileProviders.Embedded in .NET 10 RC1, ensuring correct resource name extraction for web content folders. See https://github.com/dotnet/aspnetcore/issues/63719 for details. --- .../Embedded/AbpEmbeddedFileProvider.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs index 9ea816e0eb..d73c5a50bc 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs @@ -107,6 +107,21 @@ public class AbpEmbeddedFileProvider : DictionaryBasedFileProvider { resourceName = resourceName.Substring(BaseNamespace!.Length + 1); } + else + { + // Fix NET 10 RC 1 Microsoft.Extensions.FileProviders.Embedded issue temporarily + //https://github.com/dotnet/aspnetcore/issues/63719 + string[] webContentFolders = ["Pages", "Views", "Themes", "Components"]; + foreach (var contentFolder in webContentFolders.Where(contentFolder => resourceName.Contains($".{contentFolder}."))) + { + var index = resourceName.IndexOf(contentFolder, StringComparison.CurrentCultureIgnoreCase); + if (index > 0) + { + resourceName = resourceName.Substring(index); + } + break; + } + } var pathParts = resourceName.Split('.'); if (pathParts.Length <= 2)