@@ -21,7 +21,7 @@ public static class PluginsLoader
21
21
22
22
public static List < PluginPair > Plugins ( List < PluginMetadata > metadatas , PluginsSettings settings )
23
23
{
24
- var dotnetPlugins = DotNetPlugins ( metadatas ) . ToList ( ) ;
24
+ var dotnetPlugins = DotNetPlugins ( metadatas ) ;
25
25
var pythonPlugins = PythonPlugins ( metadatas , settings . PythonDirectory ) ;
26
26
var executablePlugins = ExecutablePlugins ( metadatas ) ;
27
27
var plugins = dotnetPlugins . Concat ( pythonPlugins ) . Concat ( executablePlugins ) . ToList ( ) ;
@@ -46,75 +46,58 @@ public static IEnumerable<PluginPair> DotNetPlugins(List<PluginMetadata> source)
46
46
var type = types . First ( o => o . IsClass && ! o . IsAbstract && o . GetInterfaces ( ) . Contains ( typeof ( IPlugin ) ) ) ;
47
47
var plugin = ( IPlugin ) Activator . CreateInstance ( type ) ;
48
48
#else
49
- Assembly assembly ;
49
+ Assembly assembly = null ;
50
+ IPlugin plugin = null ;
51
+
50
52
try
51
53
{
52
54
assembly = AssemblyLoadContext . Default . LoadFromAssemblyPath ( metadata . ExecuteFilePath ) ;
53
- }
54
- catch ( Exception e )
55
- {
56
- erroredPlugins . Add ( metadata . Name ) ;
57
55
58
- Log . Exception ( $ "|PluginsLoader.DotNetPlugins|Couldn't load assembly for the plugin: { metadata . Name } ", e ) ;
59
- return ;
60
- }
56
+ var types = assembly . GetTypes ( ) ;
57
+ var type = types . First ( o => o . IsClass && ! o . IsAbstract && o . GetInterfaces ( ) . Contains ( typeof ( IPlugin ) ) ) ;
61
58
62
- Type type ;
63
- try
59
+ plugin = ( IPlugin ) Activator . CreateInstance ( type ) ;
60
+ }
61
+ catch ( Exception e ) when ( assembly == null )
64
62
{
65
- var types = assembly . GetTypes ( ) ;
66
-
67
- type = types . First ( o => o . IsClass && ! o . IsAbstract && o . GetInterfaces ( ) . Contains ( typeof ( IPlugin ) ) ) ;
63
+ Log . Exception ( $ "|PluginsLoader.DotNetPlugins|Couldn't load assembly for the plugin: { metadata . Name } ", e ) ;
68
64
}
69
65
catch ( InvalidOperationException e )
70
66
{
71
- erroredPlugins . Add ( metadata . Name ) ;
72
-
73
67
Log . Exception ( $ "|PluginsLoader.DotNetPlugins|Can't find the required IPlugin interface for the plugin: <{ metadata . Name } >", e ) ;
74
- return ;
75
68
}
76
69
catch ( ReflectionTypeLoadException e )
77
70
{
78
- erroredPlugins . Add ( metadata . Name ) ;
79
-
80
71
Log . Exception ( $ "|PluginsLoader.DotNetPlugins|The GetTypes method was unable to load assembly types for the plugin: <{ metadata . Name } >", e ) ;
81
- return ;
82
72
}
83
-
84
- IPlugin plugin ;
85
- try
73
+ catch ( Exception e )
86
74
{
87
- plugin = ( IPlugin ) Activator . CreateInstance ( type ) ;
75
+ Log . Exception ( $ "|PluginsLoader.DotNetPlugins|The following plugin has errored and can not be loaded: < { metadata . Name } >" , e ) ;
88
76
}
89
- catch ( Exception e )
77
+
78
+ if ( plugin == null )
90
79
{
91
80
erroredPlugins . Add ( metadata . Name ) ;
92
-
93
- Log . Exception ( $ "|PluginsLoader.DotNetPlugins|The following plugin has errored and can not be loaded: <{ metadata . Name } >", e ) ;
94
81
return ;
95
82
}
96
83
#endif
97
- PluginPair pair = new PluginPair
84
+ plugins . Add ( new PluginPair
98
85
{
99
86
Plugin = plugin ,
100
87
Metadata = metadata
101
- } ;
102
- plugins . Add ( pair ) ;
88
+ } ) ;
103
89
} ) ;
104
90
metadata . InitTime += milliseconds ;
105
-
106
91
}
107
92
108
93
if ( erroredPlugins . Count > 0 )
109
94
{
110
- var errorPluginString = "" ;
95
+ var errorPluginString = String . Join ( Environment . NewLine , erroredPlugins ) ;
111
96
112
97
var errorMessage = "The following "
113
98
+ ( erroredPlugins . Count > 1 ? "plugins have " : "plugin has " )
114
99
+ "errored and cannot be loaded:" ;
115
100
116
- erroredPlugins . ForEach ( x => errorPluginString += x + Environment . NewLine ) ;
117
-
118
101
Task . Run ( ( ) =>
119
102
{
120
103
MessageBox . Show ( $ "{ errorMessage } { Environment . NewLine } { Environment . NewLine } " +
0 commit comments