mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-19 01:43:50 +01:00
Do not crash the plugin packer if Assembly.GetTypes crashes
This commit is contained in:
parent
5a6bdd756a
commit
cbeea86a13
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
@ -109,9 +110,22 @@ namespace BTCPayServer.PluginPacker
|
|||||||
|
|
||||||
private static Type[] GetAllExtensionTypesFromAssembly(Assembly assembly)
|
private static Type[] GetAllExtensionTypesFromAssembly(Assembly assembly)
|
||||||
{
|
{
|
||||||
return assembly.GetTypes().Where(type =>
|
return GetLoadableTypes(assembly).Where(type =>
|
||||||
typeof(IBTCPayServerPlugin).IsAssignableFrom(type) &&
|
typeof(IBTCPayServerPlugin).IsAssignableFrom(type) &&
|
||||||
!type.IsAbstract).ToArray();
|
!type.IsAbstract).ToArray();
|
||||||
}
|
}
|
||||||
|
static Type[] GetLoadableTypes(Assembly assembly)
|
||||||
|
{
|
||||||
|
if (assembly == null)
|
||||||
|
throw new ArgumentNullException(nameof(assembly));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return assembly.GetTypes();
|
||||||
|
}
|
||||||
|
catch (ReflectionTypeLoadException e)
|
||||||
|
{
|
||||||
|
return e.Types.Where(t => t != null).ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user