{"id":18546772,"url":"https://github.com/nabeghe/pluginer","last_synced_at":"2025-05-15T07:09:43.813Z","repository":{"id":142572406,"uuid":"449822683","full_name":"nabeghe/Pluginer","owner":"nabeghe","description":"Run dll files as a plugin, create plugin for your software","archived":false,"fork":false,"pushed_at":"2023-10-14T14:23:34.000Z","size":12,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-15T07:09:33.154Z","etag":null,"topics":["compile","compiler","csharp","dll","extension","plugin","pluginer","plugins"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nabeghe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-19T19:11:35.000Z","updated_at":"2025-04-28T21:11:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"f2e7df23-7fea-4694-b2c7-dc8ebcc93ed8","html_url":"https://github.com/nabeghe/Pluginer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nabeghe%2FPluginer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nabeghe%2FPluginer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nabeghe%2FPluginer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nabeghe%2FPluginer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nabeghe","download_url":"https://codeload.github.com/nabeghe/Pluginer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254292067,"owners_count":22046427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compile","compiler","csharp","dll","extension","plugin","pluginer","plugins"],"created_at":"2024-11-06T20:26:54.679Z","updated_at":"2025-05-15T07:09:39.361Z","avatar_url":"https://github.com/nabeghe.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pluginer\n\u003e Run dll files as a plugin\n\u003e\n\u003e Do you need everyone can create plugin for your softwares?\n\u003e\n\u003e Now, you can simply use the Pluginer for this purpose\n\n# Install Nuget\n`Install-Package Pluginer -Version 2.0.1`\n\n# How to Work\n* Pluginer used to run dll files inside a path.\n* Each plugin file (dll) can be placed directly in the plugins path or it can be placed in a seperate folder in the plugins path with the same name as the plugin\n* The default plugins path is `Plugins` folder in the application root path\n* By default, the Pluginer will instance only classes that inherit from `Pluginer.PluginObject`. you can change it by assigning parents parameter in the `PluginRunner` constructor. in addition when parents are empty, Pluginer create object for each classes.\n\n# Example\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Reflection;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing Pluginer;\n\nnamespace PluginerDemo\n{\n    public partial class Form1 : Form\n    {\n        public Form1()\n        {\n            InitializeComponent();\n\n            var pr = new PluginRunner();\n            pr.OnLoadClass += Pr_OnLoadClass;\n            pr.OnLoadPlugin += Pr_OnLoadPlugin;\n            pr.OnError += Pr_OnError;\n            var args = new PluginArgs();\n            args[\"form\"] = this;\n            pr.Load(args);\n        }\n\n        private void Pr_OnLoadPlugin(PluginRunner runner, PluginEventArgs e)\n        {\n            rtb.AppendText($\"\u003e The plugin `{e.Plugin.Name}` Loaded.\\n\");\n        }\n\n        private void Pr_OnLoadClass(PluginRunner runner, PluginEventArgs e)\n        {\n            rtb.AppendText($\"\u003e The class : `{e.Type}` Loaded from plugin `{e.Plugin.Name}`\\n\");\n        }\n\n        private void Pr_OnError(PluginRunner runner, PluginEventArgs e)\n        {\n            rtb.AppendText($\"\u003e Error Plugin `{e.Plugin.Name}`: `{e.Error.Message}`\\n\");\n        }\n\n    }\n}\n\n```\n# Sample Plugin\n```csharp\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\n\nnamespace ClassLibrary1\n{\n    public class Class1 : Pluginer.PluginObject\n    {\n\n        public Class1(Pluginer.PluginArgs args)\n        {\n            MessageBox.Show(\"Hi\");\n            dynamic form = args[\"form\"];\n            form.menuStrip1.Items.Add(\"Menu 1\");\n            form.menuStrip1.Items.Add(\"Menu 2\");\n            form.menuStrip1.Items.Add(\"Menu 3\");\n            form.menuStrip1.Items.Add(\"Menu 4\");\n            form.menuStrip1.Items.Add(\"Menu 5\");\n            //Notice: don't forgot to change menuStrip1 control Modifiers to public\n        }\n\n    }\n}\n\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnabeghe%2Fpluginer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnabeghe%2Fpluginer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnabeghe%2Fpluginer/lists"}