using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Reflection; namespace SuperSocket.SocketEngine { /// <summary> /// AssemblyImport, used for importing assembly to the current AppDomain /// </summary> public class AssemblyImport : MarshalByRefObject { private string m_ImportRoot; /// <summary> /// Initializes a new instance of the <see cref="AssemblyImport"/> class. /// </summary> public AssemblyImport(string importRoot) { m_ImportRoot = importRoot; AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); } //Process cannot resolved assemblies Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { AssemblyName name = new AssemblyName(args.Name); var assemblyFilePath = Path.Combine(m_ImportRoot, name.Name + ".dll"); if (!File.Exists(assemblyFilePath)) return null; return Assembly.LoadFrom(assemblyFilePath); } } }