feat: LoadAllReferencedAssemblies with AssemblyName[]

This commit is contained in:
Mira 2023-11-25 14:01:57 +01:00
parent 2e2211d998
commit b59f83991e
Signed by untrusted user who does not match committer: Xorog
GPG key ID: 983798ED9C3E7C36

View file

@ -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);
}
/// <summary>
/// Adds additional data to an exception.
/// </summary>