Exemplo n.º 1
0
        protected static bool PopulateCatalog(PluginManagerBase instance, string pluginFolderInAppData, List <string> pluginsToIgnore = null)
        {
            instance.mError = false;

            ResolveEventHandler reh = new ResolveEventHandler(instance.currentDomain_AssemblyResolve);
            bool succeeded          = true;

            try
            {
                AppDomain currentDomain = AppDomain.CurrentDomain;
                //currentDomain.AssemblyResolve += reh;

                AggregateCatalog catalog = instance.CreateCatalog(pluginFolderInAppData, pluginsToIgnore);

                // Before we compose the parts, we want to pull out any .dll that doesn't have its references satisfied
                // Update : this isn't going to work because sometimes a .dll references another .dll, but the other .dll
                // isn't used.
                //CleanUnreferencedDlls(catalog, instance);

                var container = new CompositionContainer(catalog);



                container.ComposeParts(instance);

                succeeded = true;
            }
            catch (Exception e)
            {
                // If we get here then output won't even print out or even load.
                // This invalidates all plugins, so we should show ane rror.
                MessageBox.Show("Error in a plugin that shut down the plugin system: \n\n" + e.ToString());


                instance.CompileErrors.Add("Error trying to load plugins: \r\n\r\n" + e.ToString());

                instance.InstantiateAllListsAsEmpty();

                succeeded = false;
            }
            finally
            {
                AppDomain.CurrentDomain.AssemblyResolve -= reh;
            }
            return(succeeded);
        }
Exemplo n.º 2
0
 protected static bool ShouldProcessPluginManager(PluginCategories pluginCategories, PluginManagerBase pluginManager)
 {
     return (pluginManager.mGlobal && (pluginCategories & PluginCategories.Global) == PluginCategories.Global) ||
                         (!pluginManager.mGlobal && (pluginCategories & PluginCategories.ProjectSpecific) == PluginCategories.ProjectSpecific);
 }
Exemplo n.º 3
0
        protected static bool PopulateCatalog(PluginManagerBase instance, string pluginFolderInAppData, List<string> pluginsToIgnore = null)
        {
            instance.mError = false;

            ResolveEventHandler reh = new ResolveEventHandler(instance.currentDomain_AssemblyResolve);
            bool succeeded = true;
            try
            {
                AppDomain currentDomain = AppDomain.CurrentDomain;
                //currentDomain.AssemblyResolve += reh;

                AggregateCatalog catalog = instance.CreateCatalog(pluginFolderInAppData, pluginsToIgnore);

                // Before we compose the parts, we want to pull out any .dll that doesn't have its references satisfied
                // Update : this isn't going to work because sometimes a .dll references another .dll, but the other .dll
                // isn't used.
                //CleanUnreferencedDlls(catalog, instance);

                    var container = new CompositionContainer(catalog);



                    container.ComposeParts(instance);

                succeeded = true;

            }
            catch (Exception e)
            {
                // If we get here then output won't even print out or even load.
                // This invalidates all plugins, so we should show ane rror.
                MessageBox.Show("Error in a plugin that shut down the plugin system: \n\n" + e.ToString());


                instance.CompileErrors.Add("Error trying to load plugins: \r\n\r\n" + e.ToString());

                instance.InstantiateAllListsAsEmpty();

                succeeded = false;
            }
            finally
            {
                AppDomain.CurrentDomain.AssemblyResolve -= reh;
            }
            return succeeded;
        }
Exemplo n.º 4
0
 protected static bool ShouldProcessPluginManager(PluginCategories pluginCategories, PluginManagerBase pluginManager)
 {
     return((pluginManager.mGlobal && (pluginCategories & PluginCategories.Global) == PluginCategories.Global) ||
            (!pluginManager.mGlobal && (pluginCategories & PluginCategories.ProjectSpecific) == PluginCategories.ProjectSpecific));
 }