public static void ScanForPlugins(string citrusProjectFile) { var pluginRoot = Path.ChangeExtension(citrusProjectFile, ".OrangePlugin"); #if DEBUG var pluginConfiguration = "Debug"; #else var pluginConfiguration = "Release"; #endif CurrentPluginDirectory = Path.Combine(pluginRoot, "bin", pluginConfiguration); CurrentPlugin?.Finalize?.Invoke(); The.UI.DestroyPluginUI(); CurrentPlugin = new OrangePlugin(); ResetPlugins(); try { if (Directory.Exists(CurrentPluginDirectory)) { catalog.Catalogs.Add(new DirectoryCatalog(CurrentPluginDirectory)); ValidateComposition(); } } catch (BadImageFormatException e) { Console.WriteLine(e.Message); } catch (System.Exception e) { Console.WriteLine(e.Message); } CurrentPlugin?.Initialize?.Invoke(); var uiBuilder = The.UI.GetPluginUIBuilder(); if (uiBuilder != null) { CurrentPlugin?.BuildUI?.Invoke(uiBuilder); The.UI.CreatePluginUI(uiBuilder); } The.MenuController.CreateAssemblyMenuItems(); }
public static void ScanForPlugins() { CurrentPlugin?.Finalize?.Invoke(); The.UI.DestroyPluginUI(); CurrentPlugin = new OrangePlugin(); resolvedAssemblies.Clear(); ResetPlugins(); try { foreach (var path in EnumerateCurrentApplicationPluginAssemblyPaths()) { TryLoadAssembly(path); } ValidateComposition(); } catch (BadImageFormatException e) { Console.WriteLine(e.Message); } catch (System.Exception e) { The.UI.ShowError(e.Message); Console.WriteLine(e.Message); } ProcessPluginInitializeActions(); var uiBuilder = The.UI.GetPluginUIBuilder(); try { if (uiBuilder != null) { CurrentPlugin?.BuildUI?.Invoke(uiBuilder); The.UI.CreatePluginUI(uiBuilder); } } catch (System.Exception e) { Orange.UserInterface.Instance.ShowError($"Failed to build Orange Plugin UI with an error: {e.Message}\n{e.StackTrace}"); } The.MenuController.CreateAssemblyMenuItems(); }
public static void ScanForPlugins(string citrusProjectFile) { var pluginRoot = Path.ChangeExtension(citrusProjectFile, ".OrangePlugin"); CurrentPluginDirectory = Path.Combine(pluginRoot, "bin", pluginConfiguration); CurrentPlugin?.Finalize?.Invoke(); The.UI.DestroyPluginUI(); CurrentPlugin = new OrangePlugin(); ResetPlugins(); try { foreach (var path in EnumerateOrangeAndTangerinePluginAssemblyPaths(citrusProjectFile)) { TryLoadAssembly(path); } #if TANGERINE var tangerine = The.Workspace.ProjectJson.GetArray <string>($"{PluginsField}/{TangerineField}"); if (tangerine != null) { foreach (var path in tangerine) { TryLoadAssembly(path); } if (tangerine.Length > 0) { Console.WriteLine("Tangerine specific assemblies loaded successfully"); } } else { Console.WriteLine($"WARNING: Field '{TangerineField}' not found in '{PluginsField}' in {citrusProjectFile}"); } #else var orange = The.Workspace.ProjectJson.GetArray <string>($"{PluginsField}/{OrangeField}"); if (orange != null) { foreach (var path in orange) { TryLoadAssembly(path); } if (orange.Length > 0) { Console.WriteLine("Orange specific assemblies loaded successfully"); } } else { Console.WriteLine($"WARNING: Field '{OrangeField}' not found in '{PluginsField}' in {citrusProjectFile}"); } #endif ValidateComposition(); } catch (BadImageFormatException e) { Console.WriteLine(e.Message); } catch (System.Exception e) { The.UI.ShowError(e.Message); Console.WriteLine(e.Message); } ProcessPluginInitializeActions(); var uiBuilder = The.UI.GetPluginUIBuilder(); try { if (uiBuilder != null) { CurrentPlugin?.BuildUI?.Invoke(uiBuilder); The.UI.CreatePluginUI(uiBuilder); } } catch (System.Exception e) { Orange.UserInterface.Instance.ShowError($"Failed to build Orange Plugin UI with an error: {e.Message}\n{e.StackTrace}"); } The.MenuController.CreateAssemblyMenuItems(); }