using System; using System.Globalization; using System.Linq; using System.Reflection; namespace Server.Helper; public class ReferenceLoader : MarshalByRefObject { public string[] LoadReferences(string assemblyPath) { try { return (from x in Assembly.ReflectionOnlyLoadFrom(assemblyPath).GetReferencedAssemblies() select x.FullName).ToArray(); } catch { return null; } } public void AppDomainSetup(string assemblyPath) { try { AppDomainSetup info = new AppDomainSetup { ApplicationBase = AppDomain.CurrentDomain.BaseDirectory }; AppDomain domain = AppDomain.CreateDomain(Guid.NewGuid().ToString(), null, info); ((ReferenceLoader)Activator.CreateInstance(domain, typeof(ReferenceLoader).Assembly.FullName, typeof(ReferenceLoader).FullName, ignoreCase: false, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, null, CultureInfo.CurrentCulture, new object[0]).Unwrap()).LoadReferences(assemblyPath); AppDomain.Unload(domain); } catch { } } }