From 39f6e55b2e5a7d5279ae193019afe489d06203c7 Mon Sep 17 00:00:00 2001
From: AhtenYa <68775649+AhtenYa@users.noreply.github.com>
Date: Fri, 4 Sep 2026 06:56:57 +0000
Subject: [PATCH] Fix AssemblyDescriptorResolver.GetAssembly(string name) to
not throw CultureNotFoundException (#22137)
* Fix AssemblyDescriptorResolver GetAssembly 21517
Fix Avalonia.Platform.Internal.AssemblyDescriptorResolver.GetAssembly(string name) to not throw CultureNotFoundException when true and true .
* Fix handling multiple names with the same prefix
* Add explanation comment
---
.../Platform/Internal/AssemblyDescriptorResolver.cs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
index 0a23014cac..e71603a3f3 100644
--- a/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
+++ b/src/Avalonia.Base/Platform/Internal/AssemblyDescriptorResolver.cs
@@ -26,7 +26,8 @@ internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
if (!_assemblyNameCache.TryGetValue(name, out var rv))
{
var loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
- var match = loadedAssemblies.FirstOrDefault(a => name.Equals(a.GetName().Name, StringComparison.InvariantCultureIgnoreCase));
+ // Select assembly by ManifestModule.ScopeName instead of GetName().Name to avoid CultureInfo dependency.
+ var match = loadedAssemblies.Where(a => a.ManifestModule.ScopeName.StartsWith(name, StringComparison.InvariantCultureIgnoreCase)).OrderBy(a => a.ManifestModule.ScopeName.Length).FirstOrDefault();
if (match != null)
{
_assemblyNameCache[name] = rv = new AssemblyDescriptor(match);