public void UnloadDomain() { if (currentDomain != null) { if (loader != null) { loader.DetachLayers(); loader.UnloadLayers(); } // Log.ND_TRACE("Unloading domain: " + currentDomain.FriendlyName); AppDomain.Unload(currentDomain); } currentDomain = null; loader = null; }
public void LoadDomain() { var setup = new AppDomainSetup(); setup.ApplicationBase = AssemblyLocator.ROOT_PATH; //ND.Log.ND_INFO("new appdomain in " + setup.ApplicationBase); currentDomain = AppDomain.CreateDomain(AssemblyLocator.DOMAIN_NAME, null, setup); //ND.Log.ND_INFO("New Domain created: " + currentDomain.ToString()); currentDomain.AssemblyResolve += HandleAssemblyResolve; loader = (ProxyAssLoaderMarschal)currentDomain.CreateInstanceAndUnwrap(typeof(ProxyAssLoaderMarschal).Assembly.FullName, typeof(ProxyAssLoaderMarschal).FullName); loader.LoadFrom(AssemblyLocator.DOMAIN_PATH); // Log.ND_TRACE("Host domain: " + AppDomain.CurrentDomain.FriendlyName); // Log.ND_TRACE("child domain: " + currentDomain.FriendlyName); //Log.ND_TRACE("Application base is: " + currentDomain.SetupInformation.ApplicationBase); loader.LoadLayers(); loader.AttachLayers(); }