Ejemplo n.º 1
0
 public static bool UnloadAddIn(string AddInID)
 {
     try
     {
         if (AppDomains.ContainsKey(AddInID))
         {
             AppDomain.Unload(AppDomains[AddInID]);
             return(true);
         }
         else
         {
             throw new Exception("应用程序域已被卸载!");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Ejemplo n.º 2
0
        public static AppDomain CreateAddInAppDomain(string AddInID)
        {
            try
            {
                string path = System.AppDomain.CurrentDomain.BaseDirectory + "\\bin\\AddIn.dll";

                //Create evidence for the new application domain from evidence of
                Evidence adEvidence = AppDomain.CurrentDomain.Evidence;

                AppDomainSetup ads = GetAppDomainSetup();

                AppDomain NewDomain = AppDomain.CreateDomain(AddInID, adEvidence, ads);
                //string friendlyName = myDomain.FriendlyName;
                if (!AppDomains.ContainsKey(AddInID))
                {
                    AppDomains.Add(AddInID, NewDomain);
                }
                else
                {
                    AppDomains[AddInID] = NewDomain;
                }
                //IObject obj = (IObject)myDomain.CreateInstanceFromAndUnwrap(path, "Interface.AddInLoader");
                IAddInLoader obj = (IAddInLoader)NewDomain.CreateInstanceFromAndUnwrap(path, "AddIn.Entity.AddInLoader");
                if (!Loaders.ContainsKey(AddInID))
                {
                    Loaders.Add(AddInID, obj);
                }
                else
                {
                    Loaders[AddInID] = obj;
                }
                return(NewDomain);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }