public bool UnloadAppDomain(string friendlyName) { AppDomain value = AppDomains.FirstOrDefault(ad => ad.FriendlyName.Equals(friendlyName)); if (value == null) { return(false); } UnloadAppDomain(value); return(true); }
public T CreateNewAppDomain <T>(string domainName) where T : class { // ReSharper disable once InvertIf if (AppDomains.FirstOrDefault(ad => ad.FriendlyName.Equals(domainName)) == null) { AppDomain domain = AppDomain.CreateDomain(domainName, AppDomain.CurrentDomain.Evidence, _appDomainSetup); AppDomains.Add(domain); // HARD-CODED constant Tracer.Instance.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0, "AppDomain {0} created.", domainName); //! This bypasses the Main method as it's not executing it. object instance = domain.CreateInstanceAndUnwrap(typeof(T).Assembly.FullName, typeof(T).FullName); Instances.Add(new KeyValuePair <string, object>(domainName, instance)); // HARD-CODED constant Tracer.Instance.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 0, "AppDomain Instance {0} created.", typeof(T).FullName); //x return AppDomainInstances.Last() as T; return(instance as T); } return(null); }