Exemplo n.º 1
0
        public static Assembly CheckIfAssemblyLoaded(ILogger logger, byte[] ba, AssemblyName assemblyName, string trimmedName)
        {
            logger.Trace("Check if assembly " + trimmedName + " already loaded");

            Assembly assembly = AssemblyResolver.CheckIfAssemblyLoaded(trimmedName, AppDomain.CurrentDomain);

            if (assembly != null)
            {
                logger.Trace("The assembly " + trimmedName + " is already loaded");
            }
            else
            {
                logger.Trace("Loading the assembly into domain " + AppDomain.CurrentDomain.FriendlyName + " ...");

                if (ba != null)
                {
                    assembly = Assembly.Load(ba);
                }
                else
                {
                    assembly = Assembly.Load(assemblyName);
                }

                logger.Trace("Assembly " + assembly.FullName + " is loaded into domain " + AppDomain.CurrentDomain.FriendlyName);
            }

            return(assembly);
        }
Exemplo n.º 2
0
            public Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
            {
                var domain = sender as AppDomain;

                this.Logger.Trace("Domain " + domain.FriendlyName
                                  + " resolving assembly " + args.Name
                                  + " requested by " + (args.RequestingAssembly != null ? args.RequestingAssembly.FullName : "none")
                                  + " ...");

                AssemblyName askedAssembly  = new AssemblyName(args.Name);
                var          assemblyLoaded = AssemblyResolver.CheckIfAssemblyLoaded(askedAssembly.Name, domain);

                if (assemblyLoaded != null)
                {
                    this.Logger.Trace("Resolved for " + assemblyLoaded.FullName);
                    return(assemblyLoaded);
                }

                this.Logger.Trace("Did not resolve assembly " + args.Name);

                return(null);
            }
Exemplo n.º 3
0
            public Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
            {
                var domain = sender as AppDomain;

                this.Logger.Trace("Domain " + domain.FriendlyName
                                  + " resolving assembly " + args.Name
                                  + " requested by " + (args.RequestingAssembly != null ? args.RequestingAssembly.FullName : "none")
                                  + " ...");

                AssemblyName askedAssembly  = new AssemblyName(args.Name);
                var          assemblyLoaded = AssemblyResolver.CheckIfAssemblyLoaded(askedAssembly.Name, domain);

                if (assemblyLoaded != null)
                {
                    this.Logger.Trace("Resolved for " + assemblyLoaded.FullName + " in the loaded domain assemblies");
                    return(assemblyLoaded);
                }

                this.Logger.Trace("Did not find the assembly " + args.Name + " in the loaded domain assemblies");

                if (args.RequestingAssembly != null)
                {
                    assemblyLoaded = Plugins.LoadAssemblyFromResources(this.Logger, args.RequestingAssembly, askedAssembly);

                    if (assemblyLoaded != null)
                    {
                        this.Logger.Trace("Resolved for " + assemblyLoaded.FullName + " in " + args.RequestingAssembly.FullName + " resources");
                        return(assemblyLoaded);
                    }

                    this.Logger.Trace("Did not resolve assembly " + args.Name + " in " + args.RequestingAssembly.FullName + " resources");
                }
                else
                {
                    this.Logger.Trace("Did not resolve assembly " + args.Name + ". Requesting assembly is null. Will not try to load the asked assembly in resources");
                }

                return(null);
            }