public string[] GetAllPluginNames()
        {
            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            PluginConfigurationElement pe = new PluginConfigurationElement();
            ArrayList ps = new ArrayList();

            for (Int32 i = 0; i < config.PluginCollection.Count; i++)
            {
                pe = config.PluginCollection[i];
                ps.Add(pe.Name);
            }
            return((String[])ps.ToArray(typeof(String)));
        }
        public bool Contains(string pluginName)
        {
            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            PluginConfigurationElement pe = new PluginConfigurationElement();
            List <String> ps = new List <string>();

            for (Int32 i = 0; i < config.PluginCollection.Count; i++)
            {
                pe = config.PluginCollection[i];
                ps.Add(pe.Name);
            }
            return(ps.Contains(pluginName));
        }
Exemple #3
0
        public void TriggerPlugins(Build oldBuild, Build newBuild)
        {
            if (oldBuild.Status.Equals(newBuild.Status))
            {
                return;
            }

            PluginConfigurationSection plugins = ConfigurationManager.GetSection("pluginConfiguration") as PluginConfigurationSection;

            foreach (PluginExecutor pluginExecutor in
                     plugins.Plugins.Select(pluginElement => new PluginExecutor(pluginElement.PluginType)))
            {
                pluginExecutor.StartExecutePlugins(newBuild);
            }
        }
        private static void ValidatePlugin(Type pluginType)
        {
            PluginConfigurationSection plugins = ConfigurationManager.GetSection("pluginConfiguration") as PluginConfigurationSection;

            if (plugins == null)
            {
                throw new ArgumentException(
                          string.Format(InternalResources.PluginCouldNotFindConfigurationSection, "pluginConfiguration")
                          );
            }

            PluginElement plugin = plugins.Plugins.FirstOrDefault(p => pluginType.FullName.Equals(p.TypeStr, StringComparison.OrdinalIgnoreCase));

            if (plugin == null)
            {
                throw new ArgumentException(
                          string.Format(InternalResources.PluginCouldNotFindPluginByName, pluginType.Name)
                          );
            }
        }
        public bool LoadPlugin(string pluginName)
        {
            Boolean result = false;

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            PluginConfigurationElement pe = new PluginConfigurationElement();

            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (pe.Name == pluginName)
                    {
                        Assembly      assembly = Assembly.LoadFile(path + "\\" + pe.Assembly);
                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pluginName] = instance;
                        result = true;
                        break;
                    }
                }
                if (!result)
                {
                    application.WriteMessage(string.Format("未找到插件{0}!", pluginName));
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message));
                result = false;
            }
            return(result);
        }
        public void LoadAllPlugin()
        {
            PluginConfigurationElement pe = new PluginConfigurationElement();

            config = (PluginConfigurationSection)ConfigurationManager.GetSection("PluginSection");
            if (config == null)
            {
                application.WriteMessage("未配置插件文件!");
                return;
            }
            String path = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "";

            try
            {
                for (Int32 i = 0; i < config.PluginCollection.Count; i++)
                {
                    pe = config.PluginCollection[i];
                    if (File.Exists(path + "\\" + pe.Assembly))
                    {
                        Assembly      assembly = Assembly.LoadFile(path + "\\" + pe.Assembly);
                        Type          type     = assembly.GetType(pe.Type);
                        IServerPlugin instance = (IServerPlugin)Activator.CreateInstance(type);
                        instance.ServerApplication = application;
                        instance.Load();
                        plugins[pe.Name] = instance;
                    }
                    else
                    {
                        application.WriteMessage(string.Format("服务器端插件文件{0}不存在!", pe.Assembly));
                    }
                }
            }
            catch (Exception e)
            {
                application.WriteMessage(string.Format("出现错误:{0}", e.Message));
            }
        }