Improve error handling when attempting to load very old plugin assemblies

This commit is contained in:
Luke Pulverenti 2017-07-10 05:08:46 -04:00
parent fe8b69406a
commit 975a973d31
2 changed files with 14 additions and 4 deletions

View File

@ -560,12 +560,15 @@ namespace Emby.Common.Implementations
{ {
if (assembly == null) if (assembly == null)
{ {
throw new ArgumentNullException("assembly"); return new List<Type>();
} }
try try
{ {
return assembly.GetTypes(); // This null checking really shouldn't be needed but adding it due to some
// unhandled exceptions in mono 5.0 that are a little hard to hunt down
var types = assembly.GetTypes() ?? new Type[] { };
return types.Where(t => t != null);
} }
catch (ReflectionTypeLoadException ex) catch (ReflectionTypeLoadException ex)
{ {
@ -578,7 +581,14 @@ namespace Emby.Common.Implementations
} }
// If it fails we can still get a list of the Types it was able to resolve // If it fails we can still get a list of the Types it was able to resolve
return ex.Types.Where(t => t != null); var types = ex.Types ?? new Type[] { };
return types.Where(t => t != null);
}
catch (Exception ex)
{
Logger.ErrorException("Error loading types from assembly", ex);
return new List<Type>();
} }
} }

View File

@ -1,3 +1,3 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.2.24.0")] [assembly: AssemblyVersion("3.2.25.0")]