Child pages
  • Plugin Loader
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

PluginLoader is a facility for loading the Plugin DLLs that constitute the Omea application, both stock and third-party.
Objectives:

  • (EXP) Enable running experimental Omea versions on different core binaries, plugins, and database without touching the primary installation.
  • (LDC) Use Load context for the core plugins instead of LoadFrom, which enables the use of GAC or NGen.
  • (PUP) Per-user plugins should still be supported.

Basics. PluginLoader should look for assembly files under the Plugin Locations and, in case the file matches the Plugin Files Mask, load the assembly and look for classes implementing the IPlugin interface, wwhich are the plugins.

Plugin Locations. There are several folders to be checked for the plugins (marked with "(lightbulb)").

  • Primary Plugins.
    • (lightbulb) Omea Binaries folder. Loaded from the Omea Binaries folder, side-by-side with the entry executable.
      • Each DLL that matches the Plugin Files Mask is loaded by its assembly name, which must correspond to the file name, but for file extension. This provides for the Load context and enables the GAC/NGen functionality. *** If the DLL is not a primary Omea plugin, an error is raised.
      • If the DLL could not be loaded by its name (assembly name does not agree with the file name), an error is raised.
  • Third-party Plugins.
    • Per-machine plugins.
      • (lightbulb) Plugins folder under the Omea Binaries folder.
        • Plugin Files Mask applies.
        • File Name must agree to the assembly name, as the Load context will, possibly, be applied to these plugins as well.
      • (lightbulb) <AllUsersAppData>/JetBrains/Omea/Plugins folder.
        • Plugin Files Mask applies.
        • LoadFrom context is used.
    • Per-user plugins.
      • (lightbulb) <RoamingAppData>/JetBrains/Omea/Plugins folder.
        • Plugin Files Mask applies.
        • LoadFrom context is used.
      • (lightbulb) <LocalAppData>/JetBrains/Omea/Plugins folder.
        • Plugin Files Mask applies.
        • LoadFrom context is used.
      • (lightbulb) <OmeaDatabaseFolder>/Plugins folder.
        • Applies to Omea instances running the given database only.
        • Plugin Files Mask applies.
        • LoadFrom context is used.
  • No labels