/// <summary> /// Unloads the plugins /// </summary> public void Unload() { AppDomain.Unload(appDomain); remoteLoader = null; appDomain = null; }
/// <summary> /// Creates the local loader class /// </summary> /// <param name="pluginDirectory">The plugin directory</param> public LocalLoader(string pluginDirectory) { AppDomainSetup setup = new AppDomainSetup(); setup.ApplicationName = "Plugins"; //Hardcoded setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; setup.PrivateBinPath = Path.GetDirectoryName(pluginDirectory).Substring(Path.GetDirectoryName(pluginDirectory).LastIndexOf(Path.DirectorySeparatorChar) + 1); setup.CachePath = Path.Combine(pluginDirectory, "cache" + Path.DirectorySeparatorChar); setup.ShadowCopyFiles = "false"; setup.ShadowCopyDirectories = pluginDirectory; appDomain = AppDomain.CreateDomain("Plugins", null, setup); appDomain.InitializeLifetimeService(); remoteLoader = (RemoteLoader)appDomain.CreateInstanceAndUnwrap("XPluginFramework", "XPluginFramework.RemoteLoader"); //Hardcoded //remoteLoader = (RemoteLoader)appDomain.CreateInstanceFromAndUnwrap("XPluginFramework", "XPluginFramework.RemoteLoader"); }