@ -112,9 +112,16 @@ 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 ( ) ;
try
{
assembly . GetExportedTypes ( ) ;
}
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 ;
}
}
catch ( FileLoadException ex )
{
@ -122,12 +129,6 @@ namespace Emby.Server.Implementations.Plugins
ChangePluginState ( plugin , PluginStatus . Malfunctioned ) ;
continue ;
}
catch ( TypeLoadException ex )
{
_logger . LogError ( ex , "Failed to load assembly {Path}. Disabling plugin. This is probably caused by an incompatible plugin version." , file ) ;
ChangePluginState ( plugin , PluginStatus . Malfunctioned ) ;
continue ;
}
_logger . LogInformation ( "Loaded assembly {Assembly} from {Path}" , assembly . FullName , file ) ;
yield return assembly ;