static void TryLoadTypesCache() { SolutionElement activeSolution = CodeRush.Source.ActiveSolution; if (activeSolution == null || activeSolution.ProjectElements == null || activeSolution.ProjectElements.Count == 0) return; ProjectElement activeProject = CodeRush.Source.ActiveProject; if (activeProject != null) { IAssemblyPathsProvider pathsProvider = new DefaultAssemblyPathsProvider(); ExtendedFrameworkVersion frameworkVersion = GetExtendedFrameworkVersion(activeProject); _DotNetTypes.TryLoadTypesFromCache(frameworkVersion); // The following line is for rescanning of changed or new assemblies _DotNetTypes.ReScanAssemblies(pathsProvider, frameworkVersion); } }
static AssemblyNamespaceList GetMatchingTypes(ProjectElement project, string typeName) { bool caseSensitive = project.IsCaseSensitiveLanguage; ExtendedFrameworkVersion frameworkVersion = GetExtendedFrameworkVersion(project); NamespacesResult projectTypesResult = GetNamespaceFromReferencedProjects(project, typeName); if (projectTypesResult.State == LoadState.TypeFound) return projectTypesResult.Namespaces; IAssemblyPathsProvider pathsProvider = new DefaultAssemblyPathsProvider(); TypeToAssemblyNamespaceMap dotNetTypesInThisFramework = _DotNetTypes.GetTypeToAssemblyMap(pathsProvider, frameworkVersion); if (!dotNetTypesInThisFramework.ContainsKey(typeName, caseSensitive)) { NamespacesResult referencesAssembliesTypesResult = GetNamespaceFromReferencedAssemblies(project, typeName); if (referencesAssembliesTypesResult.State == LoadState.TypeFound) return referencesAssembliesTypesResult.Namespaces; } return dotNetTypesInThisFramework.GetNamespaceList(typeName, caseSensitive); }