/// <summary> /// Loads the module based on the configuration passed in the constructor. /// </summary> /// <returns>Success?</returns> public override void LoadModule() { AppDomainSetup ads = new AppDomainSetup(); ads.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory; ads.LoaderOptimization = LoaderOptimization.SingleDomain; ads.ShadowCopyFiles = "false"; //Create the AppDomain. System.Security.Policy.Evidence secureEvidence = new System.Security.Policy.Evidence(); secureEvidence.AddAssembly( Assembly.GetCallingAssembly() ); moduleSpace = AppDomain.CreateDomain( "Project2QDomain." + moduleId, secureEvidence, ads ); //FullTrust this guy. IModule.SetSecurityPolicy( moduleSpace ); moduleProxy = new ModuleProxy( moduleId, "Project2QAssembly." + moduleId, modConfig.FileNames, modConfig.FullName, new Project2Q.SDK.ModuleSupport.ModuleProxy.VariableParamRetrievalDelegate( Server.RetrieveVariable )); try { moduleProxy.LoadModule(); } catch { AppDomain.Unload( moduleSpace ); moduleSpace = null; moduleProxy = null; throw; } }