Repository navigation
Managing Plugins
Open Manage Plugins from the main toolbar. The page lists plugin identity, author, version, runtime state, settings availability, and load errors.
The importer accepts one DLL, a selected collection of related DLLs, or a ZIP archive. Collections and archives are placed in a named subdirectory. Private dependencies and native files should be packaged with the plugin; application contract DLLs should not.
The runtime toggle calls EnableAsync or DisableAsync immediately. A well-behaved plugin can be disabled and re-enabled without restarting and without duplicating UI or event subscriptions.
During disable/unload the host also removes registered UI cleanup actions, plugin dialogs, resource dictionaries, and plugin load contexts. Plugins must still release their own references.
The Settings action is available when a plugin implements IPluginSettingsProvider. Settings are persisted in the configured plugin-data directory and applied through OnSettingChangedAsync.
Refresh Installed Plugins discovers new plugin assemblies in the current directory without requiring an application restart.
Changing the plugin directory in Application Settings performs a full reload:
- Disable and dispose currently loaded plugins.
- Remove their UI and theme resources.
- Unload their assembly load contexts.
- Create the new plugin directory when missing.
- Load plugins found in the new directory.
Changing the plugin-data directory also performs a full reload so new IPluginDataStore instances point to the new location. Existing data already in that folder is loaded normally.
Delete asks for confirmation, unloads the plugin package, and removes its files. Deletion safety only permits files within the currently configured plugin directory. If unload repeatedly fails, inspect the log for retained event handlers, timers, windows, media objects, threads, or static references.
The button resolves the currently configured plugin directory when clicked, creates it if missing, and opens it in Explorer. The path can be a per-user override or workstation default.
Plugins receive IPluginContext.Logger. Their messages appear in the same application session log under a Plugin.<name> category. This is the first place to inspect initialization, dependency, setting, or cleanup failures.