Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }