Ejemplo n.º 1
0
        public AssemblyDynamicLoader()
        {
            AppDomainSetup setup = new AppDomainSetup();

            setup.ApplicationName       = "ApplicationLoader";
            setup.ApplicationBase       = AppDomain.CurrentDomain.BaseDirectory;
            setup.PrivateBinPath        = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");
            setup.CachePath             = setup.ApplicationBase;
            setup.ShadowCopyFiles       = "true";
            setup.ShadowCopyDirectories = setup.ApplicationBase;
            //AppDomain.CurrentDomain.SetShadowCopyFiles();
            this.appDomain = AppDomain.CreateDomain("ApplicationLoaderDomain", null, setup);

            String name = Assembly.GetExecutingAssembly().GetName().FullName;

            this.remoteLoader = (RemoteLoader)this.appDomain.CreateInstanceAndUnwrap(name, typeof(RemoteLoader).FullName);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 卸载应用程序域
 /// </summary>
 public void Unload()
 {
     try
     {
         if (appDomain == null)
         {
             return;
         }
         AppDomain.Unload(this.appDomain);
         this.appDomain    = null;
         this.remoteLoader = null;
     }
     catch (CannotUnloadAppDomainException ex)
     {
         throw ex;
     }
 }