From 005b51578b00a1b32cd9b339ac7f9f7d23f7e3a9 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 25 Sep 2025 19:54:04 +0800 Subject: [PATCH 1/2] Improve virtual file provider path resolution --- .../DictionaryBasedFileProvider.cs | 2 +- .../Embedded/AbpEmbeddedFileProvider.cs | 32 +++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs index cb0786393b..63c2b0bc03 100644 --- a/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs +++ b/framework/src/Volo.Abp.VirtualFileSystem/Volo/Abp/VirtualFileSystem/DictionaryBasedFileProvider.cs @@ -16,7 +16,7 @@ public abstract class DictionaryBasedFileProvider : IFileProvider return new NotFoundFileInfo(subpath!); } - var file = Files.GetOrDefault(NormalizePath(subpath)); + var file = Files.GetOrDefault(NormalizePath(subpath)) ?? Files.GetOrDefault(subpath); if (file == null) { 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 bacfce0495..8ca6a5dc3f 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 @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using System.Text.RegularExpressions; using JetBrains.Annotations; using Microsoft.Extensions.FileProviders; @@ -129,10 +130,35 @@ public class AbpEmbeddedFileProvider : DictionaryBasedFileProvider return resourceName; } - var folder = pathParts.Take(pathParts.Length - 2).JoinAsString("/"); - var fileName = pathParts[pathParts.Length - 2] + "." + pathParts[pathParts.Length - 1]; + if (pathParts.Length >= 4 && pathParts[pathParts.Length - 2] == "min") + { + // Fix NET 10 RC 1 Microsoft.Extensions.FileProviders.Embedded issue temporarily + //https://github.com/dotnet/aspnetcore/issues/63719 + pathParts = pathParts[pathParts.Length - 3] == "bundle" + ? pathParts.Take(pathParts.Length - 4).Concat([pathParts.Skip(pathParts.Length - 4).JoinAsString(".")]).ToArray() + : pathParts.Take(pathParts.Length - 3).Concat([pathParts.Skip(pathParts.Length - 3).JoinAsString(".")]).ToArray(); + + if (pathParts.Length <= 2) + { + return resourceName; + } + + var folder = pathParts.Take(pathParts.Length - 1).JoinAsString("/").Replace("_", "-"); + var fileName = pathParts[pathParts.Length - 1].Replace("_", "-"); + return folder + "/" + fileName; + } + else + { + if (pathParts.Length <= 2) + { + return resourceName; + } + + var folder = pathParts.Take(pathParts.Length - 2).JoinAsString("/"); + var fileName = pathParts[pathParts.Length - 2] + "." + pathParts[pathParts.Length - 1]; - return folder + "/" + fileName; + return folder + "/" + fileName; + } } private static string CalculateFileName(string filePath) From d8528735a47bd73a1a96a50797fe54b52587bdf5 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 26 Sep 2025 08:51:40 +0800 Subject: [PATCH 2/2] Handle 'rtl' in embedded file provider path check --- .../Abp/VirtualFileSystem/Embedded/AbpEmbeddedFileProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8ca6a5dc3f..05c5e867e7 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 @@ -130,7 +130,7 @@ public class AbpEmbeddedFileProvider : DictionaryBasedFileProvider return resourceName; } - if (pathParts.Length >= 4 && pathParts[pathParts.Length - 2] == "min") + if (pathParts.Length >= 4 && (pathParts[pathParts.Length - 2] == "min" || pathParts[pathParts.Length - 2] == "rtl")) { // Fix NET 10 RC 1 Microsoft.Extensions.FileProviders.Embedded issue temporarily //https://github.com/dotnet/aspnetcore/issues/63719