|
@@ -112,8 +112,6 @@ namespace Emby.Server.Implementations.Plugins
|
|
|
{
|
|
|
assembly = Assembly.LoadFrom(file);
|
|
|
|
|
|
- // This force loads all reference dll's that the plugin uses in the try..catch block.
|
|
|
- // Removing this will cause JF to bomb out if referenced dll's cause issues.
|
|
|
assembly.GetExportedTypes();
|
|
|
}
|
|
|
catch (FileLoadException ex)
|
|
@@ -122,6 +120,20 @@ namespace Emby.Server.Implementations.Plugins
|
|
|
ChangePluginState(plugin, PluginStatus.Malfunctioned);
|
|
|
continue;
|
|
|
}
|
|
|
+ catch (TypeLoadException ex) // Undocumented exception
|
|
|
+ {
|
|
|
+ _logger.LogError(ex, "Failed to load assembly {Path}. This error occurs when a plugin references an incompatible version of one of the shared libraries. Disabling plugin.", file);
|
|
|
+ ChangePluginState(plugin, PluginStatus.NotSupported);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+#pragma warning disable CA1031 // Do not catch general exception types
|
|
|
+ catch (Exception ex)
|
|
|
+#pragma warning restore CA1031 // Do not catch general exception types
|
|
|
+ {
|
|
|
+ _logger.LogError(ex, "Failed to load assembly {Path}. Unknown exception was thrown. Disabling plugin.", file);
|
|
|
+ ChangePluginState(plugin, PluginStatus.Malfunctioned);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
_logger.LogInformation("Loaded assembly {Assembly} from {Path}", assembly.FullName, file);
|
|
|
yield return assembly;
|