| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 |  
public static class AssemblyLocator
        {
            static Dictionary<string, Assembly> assemblies;
            static Dictionary<string, Assembly> softassemblies;
 
            public static void Init()
            {
                assemblies = new Dictionary<string, Assembly>();
                softassemblies = new Dictionary<string, Assembly>();
 
                AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
 
            }
 
            static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
            {
                Assembly assembly = null;
                assemblies.TryGetValue(args.Name, out assembly);
                if (assembly == null)
                {
                    try
                    {
                        AssemblyName name = new AssemblyName(args.Name);
                        softassemblies.TryGetValue(name.Name.ToLower(), out assembly);
                    }
                    catch { }
                }
 
                return assembly;
            }
 
            static void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
            {
                Assembly assembly = args.LoadedAssembly;
 
                assemblies[assembly.FullName] = assembly;
                softassemblies[assembly.GetName().Name.ToLower()] = assembly;
            }
        } |