implement a compatibility check (in addition to the dependency check) when loading plugins plugin.xml: - added a new 'Version' element - 'PluginReference' element now requires a 'CompatibleAPI' attribute - added a 'CoreDependency' element for the allowed 'DependsOn' subelements - adapted DTD accordingly (MP2-351)

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
enabled PluginManager to handle circular dependencies

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
PluginManager handles (and logs) Exceptions about Missing and Incompatible Plugins instead of throwing them, thus killing the application

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fixed SQLite version description

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fixed missing CoreAPI attribute in Backend assembly

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Finished refactoring PluginManager to separate metadata from runtime info, and to simplify/modernize the code base.

Conflicts:
	MediaPortal/Resources/Settings/ReSharper/TeamMediaPortal.DotSettings

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Removed using clause referencing future work to fix compile error.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fixed bug causing plugins not to be auto-activated when items were requested. Fixed a couple of other minor bugs causing startup errors.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fix for wrong path being returned for plugins. Fix to avoid stack overflow for dependency checks.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fix to avoid downgrading plugins from active to enabled.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Improved logging messages for plugin subsystem. Fixed bug causing plugin assemblies to be loaded when plugin was being enabled. Fixed bug causing plugins to be started in incorrect order. Assimilated test project to allow tests for other parts of MP2.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Adjusted test project folder name to match new project name. Minor code cleanups.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Removed test case placeholder classes (moved to test project).

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Modified RegistryNode to make it thread-safe. Code cleanups and code comment review.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Reviewed/fixed documentation tags for all classes in plugin subsystem. Improved code organization (everything now lives under MP.Common.PluginManager, except for the service class itself). Dropped the use of interfaces for metadata model classes. Removed unused exception classes. Various other minor code cleanups.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
PluginRuntime: Changed lock for State property to allow reads without acquiring lock. Modified code to ensure lock is not held when calling out to change plugin state during requests for items. RegistryNode: fixed NRE bug.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Modified registry fix to not initialize collections (was change in behavior).

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
RegistryNode: Fix to use dictionaries with same comparison behavior. Minor code cleanups.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Fixed test project reference in solution file.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>
Reformatted all modified code using updated R# code style settings.

Signed-off-by: morpheusxx <morpheus_xx@team-mediaportal.com>