{"id":17632997,"url":"https://github.com/jeronimosg/CSharpPluginManager","last_synced_at":"2025-08-08T13:31:58.966Z","repository":{"id":144518469,"uuid":"163212034","full_name":"UpsettingBoy/CSharpPluginManager","owner":"UpsettingBoy","description":"Simple plugin manager for .NET","archived":false,"fork":false,"pushed_at":"2019-10-30T18:28:49.000Z","size":11,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-21T22:28:59.879Z","etag":null,"topics":["csharp","csharp-library","csharp-plugin-manager","dotnet","netcore","plugin","plugin-manager"],"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/UpsettingBoy.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":"2018-12-26T19:40:37.000Z","updated_at":"2020-03-06T01:49:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"a51111bd-b211-4499-8afe-ebfcbe60e2d4","html_url":"https://github.com/UpsettingBoy/CSharpPluginManager","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpsettingBoy%2FCSharpPluginManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpsettingBoy%2FCSharpPluginManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpsettingBoy%2FCSharpPluginManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UpsettingBoy%2FCSharpPluginManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UpsettingBoy","download_url":"https://codeload.github.com/UpsettingBoy/CSharpPluginManager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229144637,"owners_count":18026911,"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":["csharp","csharp-library","csharp-plugin-manager","dotnet","netcore","plugin","plugin-manager"],"created_at":"2024-10-23T01:46:54.203Z","updated_at":"2025-08-08T13:31:58.410Z","avatar_url":"https://github.com/UpsettingBoy.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSharp Plugin Manager\nThis library reduces the amount of work needed for the implementation of a plugin manager into an application.\n\n## Usage (host application)\nFirstly, add **_PluginManager_** project into yours by cloning and referencing or by **Nuget** (added later). Then, follow the example below:\n\n```csharp\nusing UpsettingBoy.CSharpPluginManager;\n\npublic class DesiredClass\n{\n    public DesiredClass()\n    {\n        PluginManager manager = new PluginManager(\"\u003cplugins_location\u003e\");\n        manager.EnablePlugins();\n\n        //For viewing plugins state use...\n        //manager.PluginsState; (is a SortedMap)\n    }\n}\n```\n\nYou also need to provide plugin developers an API for access your application features. \n\nIf you are concerned about the lack of UI support for plugin implementation, I am working on it (adding a new method on **_IPlugin_** interface).\n\n## Usage (plugin developer)\nIn order to your plugin to be loaded by _**PluginManager**_ it has to implement\n**_IPlugin_** interface. You can add this interface by cloning and referencing \n**_Plugin_** project into yours or by the **_Nuget_** package (added later on), then, simply implements the interface in **ONLY ONE CLASS** of your plugin (_OnEnable_ method will become the entry point of your plugin). An example class:\n\n```csharp\nusing UpsettingBoy.CSharpPlugin;\n\npublic class MainClass : IPlugin\n{\n    public string Name =\u003e \"YourPluginName\";\n    public string Author =\u003e \"YourName\";\n\n    public void OnEnable()\n    {\n        //your plugin stuff.\n    }\n}\n```\n\nIn the future, it might be added new methods/properties into **_IPlugin_** so backwards compatibility migth be a problem. Watch out **_PluginManager_**\nversion given by the host application of your plugin.\n\n## License\nThis project is under a [MIT](https://www.github.com/UpsettingBoy/CSharpPluginManager/blob/master/LICENSE) license. \n\n**_CSharpPluginManager_** also uses:\n- **Microsoft.CSharp** -\u003e [MIT](https://github.com/dotnet/corefx/blob/master/LICENSE.TXT) license.\n\nAdditional information of licenses on *Licenses* folder.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeronimosg%2FCSharpPluginManager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeronimosg%2FCSharpPluginManager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeronimosg%2FCSharpPluginManager/lists"}