From b59f83991e97e712b2a0ca91b9a240c77292c43c Mon Sep 17 00:00:00 2001 From: Mira <56395159+TheXorog@users.noreply.github.com> Date: Sat, 25 Nov 2023 14:01:57 +0100 Subject: [PATCH] feat: LoadAllReferencedAssemblies with AssemblyName[] --- UniversalExtensions.cs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/UniversalExtensions.cs b/UniversalExtensions.cs index 1391efd..2c14121 100644 --- a/UniversalExtensions.cs +++ b/UniversalExtensions.cs @@ -51,6 +51,39 @@ public static class UniversalExtensions _logger?.LogInformation("Loaded {assemblyCount} assemblies.", assemblyCount); } + public static void LoadAllReferencedAssemblies(params AssemblyName[] assemblies) + { + _logger?.LogDebug("Loading all assemblies.."); + + var assemblyCount = 0; + foreach (AssemblyName assembly in assemblies) + { + LoadReferencedAssembly(Assembly.Load(assembly)); + } + + void LoadReferencedAssembly(Assembly assembly) + { + try + { + foreach (AssemblyName name in assembly.GetReferencedAssemblies()) + { + if (!AppDomain.CurrentDomain.GetAssemblies().Any(a => a.FullName == name.FullName)) + { + assemblyCount++; + _logger?.LogDebug("Loading {Name}..", name.Name); + LoadReferencedAssembly(Assembly.Load(name)); + } + } + } + catch (Exception ex) + { + _logger?.LogError("Failed to load an assembly", ex); + } + } + + _logger?.LogInformation("Loaded {assemblyCount} assemblies.", assemblyCount); + } + /// /// Adds additional data to an exception. ///