123456789101112131415161718192021222324252627282930313233343536373839 |
- 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);
- }
- }
- }
|