private Assembly LoadLibraryAssembly(AssemblyName assemblyName)
        {
            Assembly assembly;

            if (assemblyName == null)
            {
                return(null);
            }
            string str = ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName);

            if (this.loadedAssemblies.TryGetValue(str, out assembly))
            {
                return(assembly);
            }
            if (this.librarySignatures.Contains(str))
            {
                foreach (string probingPath in this.probingPaths)
                {
                    string       str1          = string.Concat(PathHelper.ResolveCombinedPath(probingPath, assemblyName.Name), ".dll");
                    AssemblyName assemblyName1 = ProjectAssemblyHelper.CachedGetAssemblyNameFromPath(str1);
                    if (assemblyName1 == null || !ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName1).Equals(str, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }
                    assembly = ProjectAssemblyHelper.LoadFrom(str1);
                    if (assembly == null)
                    {
                        continue;
                    }
                    this.loadedAssemblies.Add(str, assembly);
                    break;
                }
            }
            return(assembly);
        }
Exemplo n.º 2
0
        private Assembly ResolveInstalledAssembly(string path)
        {
            if (path == null)
            {
                throw new ArgumentNullException("path");
            }
            Assembly assembly = null;

            if (this.installedAssemblies.TryGetValue(path, out assembly))
            {
                return(assembly);
            }
            if (this.IsInstalledAssembly(path))
            {
                assembly = ProjectAssemblyHelper.LoadFrom(path);
            }
            if (assembly != null)
            {
                this.installedAssemblies.Add(path, assembly);
            }
            return(assembly);
        }
Exemplo n.º 3
0
        public Assembly ResolveAssembly(AssemblyName assemblyName)
        {
            Assembly assembly;
            Assembly assembly1 = null;

            if (!this.hasEntered)
            {
                lock (this.syncLock)
                {
                    try
                    {
                        string str = ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName);
                        this.hasEntered = true;
                        if (!this.blendAssemblies.TryGetValue(str, out assembly1))
                        {
                            foreach (KeyValuePair <string, string> delayLoadedAssembly in this.delayLoadedAssemblies)
                            {
                                if (!string.Equals(str, delayLoadedAssembly.Key, StringComparison.OrdinalIgnoreCase))
                                {
                                    continue;
                                }
                                assembly1 = (delayLoadedAssembly.Value == null ? ProjectAssemblyHelper.Load(str) : ProjectAssemblyHelper.LoadFrom(delayLoadedAssembly.Value));
                                if (assembly1 != null)
                                {
                                    this.blendAssemblies.Add(str, assembly1);
                                }
                                assembly = assembly1;
                                return(assembly);
                            }
                        }
                    }
                    finally
                    {
                        this.hasEntered = false;
                    }
                    return(assembly1);
                }
                return(assembly);
            }
            return(assembly1);
        }