/// <summary> /// Initialises all available plugins on the background thread. /// </summary> public static void Initialize() { lock (Plugins) { if (Plugins.Count > 0) { return; } try { ManagedExtensibility.SetUserPluginsPath(AppSettings.UserPluginsPath); foreach (var plugin in ManagedExtensibility.GetExports <IGitPlugin>().Select(lazy => lazy.Value)) { Validates.NotNull(plugin.Name); plugin.SettingsContainer = new GitPluginSettingsContainer(plugin.Name); if (plugin is IRepositoryHostPlugin repositoryHostPlugin) { GitHosters.Add(repositoryHostPlugin); } Plugins.Add(plugin); } } catch { // no-op } } }
/// <summary> /// Initialises all available plugins on the background thread. /// </summary> public static void Initialize() { lock (Plugins) { if (Plugins.Count > 0) { return; } try { foreach (var plugin in ManagedExtensibility.GetExports <IGitPlugin>().Select(lazy => lazy.Value)) { Validates.NotNull(plugin.Description); // Description for old plugin setting processing as key plugin.SettingsContainer = new GitPluginSettingsContainer(plugin.Id, plugin.Description); if (plugin is IRepositoryHostPlugin repositoryHostPlugin) { GitHosters.Add(repositoryHostPlugin); } Plugins.Add(plugin); } } catch { // no-op } } }