コード例 #1
0
ファイル: AssemblyService.cs プロジェクト: radtek/Shopdrawing
        private Assembly ResolveInstalledAssembly(AssemblyName assemblyName)
        {
            Assembly assembly;
            string   str = ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName);

            Dictionary <string, Assembly> .ValueCollection.Enumerator enumerator = this.installedAssemblies.Values.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    Assembly current = enumerator.Current;
                    if (current.FullName != str)
                    {
                        continue;
                    }
                    assembly = current;
                    return(assembly);
                }
                return(null);
            }
            finally
            {
                ((IDisposable)enumerator).Dispose();
            }
            return(assembly);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: AssemblyService.cs プロジェクト: radtek/Shopdrawing
        public Assembly GetCachedSatelliteAssembly(AssemblyName assemblyName)
        {
            Assembly assembly;

            if (this.satelliteAssemblies.TryGetValue(ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName), out assembly))
            {
                return(assembly);
            }
            return(null);
        }
コード例 #4
0
ファイル: ProjectAssembly.cs プロジェクト: radtek/Shopdrawing
        internal ProjectAssembly(IProjectItem projectItem, Assembly runtimeAssembly, string path, bool isImplicitlyResolvedAssembly)
        {
            this.Path            = path;
            this.RuntimeAssembly = runtimeAssembly;
            AssemblyName assemblyName = ProjectAssemblyHelper.GetAssemblyName(this.RuntimeAssembly);

            this.Name                 = assemblyName.Name;
            this.FullName             = ProjectAssemblyHelper.CachedGetAssemblyFullName(assemblyName);
            this.IsImplicitlyResolved = isImplicitlyResolvedAssembly;
            this.ProjectItem          = projectItem;
        }
コード例 #5
0
        public static AssemblyName CachedGetAssemblyNameFromPath(string path)
        {
            if (string.IsNullOrEmpty(path))
            {
                return(null);
            }
            if (!ProjectAssemblyHelper.pathToAssemblyNameCache.ContainsKey(path))
            {
                ProjectAssemblyHelper.pathToAssemblyNameCache[path] = ProjectAssemblyHelper.GetAssemblyNameFromPath(path);
            }
            AssemblyName item = (AssemblyName)ProjectAssemblyHelper.pathToAssemblyNameCache[path];

            if (item != null)
            {
                ProjectAssemblyHelper.CachedGetAssemblyFullName(item);
            }
            return(item);
        }
コード例 #6
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);
        }