public RoslynAssemblyLoader(string rootPath, IFileWatcher watcher, IFrameworkReferenceResolver resolver, IGlobalAssemblyCache globalAssemblyCache, IAssemblyLoader dependencyLoader, IResourceProvider resourceProvider) { _rootPath = rootPath; _watcher = watcher; _resolver = resolver; _globalAssemblyCache = globalAssemblyCache; _dependencyLoader = dependencyLoader; _resourceProvider = resourceProvider; }
public RoslynAssemblyLoader(string rootPath, IFileWatcher watcher, IFrameworkReferenceResolver resolver, IGlobalAssemblyCache globalAssemblyCache, IAssemblyLoader dependencyLoader, IResourceProvider resourceProvider) { _rootPath = rootPath; _watcher = watcher; _resolver = resolver; _globalAssemblyCache = globalAssemblyCache; _dependencyLoader = dependencyLoader; _resourceProvider = resourceProvider; }
private static IDictionary <FrameworkName, FrameworkInformation> PopulateCache(IGlobalAssemblyCache globalAssemblyCache) { var info = new Dictionary <FrameworkName, FrameworkInformation>(); #if DESKTOP string defaultPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), @"Reference Assemblies\Microsoft\Framework\"); PopulateReferenceAssemblies(defaultPath, globalAssemblyCache, info); // Additional profile paths var profilePaths = Environment.GetEnvironmentVariable("PROFILE_PATHS"); if (profilePaths != null) { foreach (var profilePath in profilePaths.Split(';')) { PopulateReferenceAssemblies(profilePath, globalAssemblyCache, info); } } #endif foreach (var frameworkDirectory in GetFrameworkDirectories()) { if (Directory.Exists(frameworkDirectory)) { PopulateReferenceAssemblies(frameworkDirectory, globalAssemblyCache, info); } } return(info); }
public FrameworkReferenceResolver(IGlobalAssemblyCache globalAssemblyCache) { _globalAssemblyCache = globalAssemblyCache; _cache = PopulateCache(globalAssemblyCache); }
private static void PopulateReferenceAssemblies(string path, IGlobalAssemblyCache globalAssemblyCache, IDictionary <FrameworkName, FrameworkInformation> cache) { var di = new DirectoryInfo(path); if (!di.Exists) { return; } foreach (var d in di.EnumerateDirectories()) { if (d.Name.StartsWith("v")) { continue; } foreach (var v in d.EnumerateDirectories()) { var frameworkInfo = new FrameworkInformation(); var frameworkName = new FrameworkName(d.Name, new Version(v.Name.TrimStart('v'))); var facadePath = Path.Combine(v.FullName, "RuntimeFacades"); string redistList = Path.Combine(v.FullName, "RedistList", "FrameworkList.xml"); if (File.Exists(redistList)) { foreach (var assemblyName in GetFrameworkAssemblies(redistList)) { var assemblyPath = Path.Combine(v.FullName, assemblyName + ".dll"); if (!File.Exists(assemblyPath)) { // Check the gac fror full framework only if (frameworkName.Identifier == VersionUtility.DefaultTargetFramework.Identifier) { if (!globalAssemblyCache.TryResolvePartialName(assemblyName, out assemblyPath)) { continue; } } else { continue; } } frameworkInfo.Assemblies.Add(new AssemblyInfo(assemblyName, assemblyPath)); } } else { foreach (var assemblyFileInfo in v.EnumerateFiles("*.dll")) { try { #if DESKTOP // CORECLR_TODO: AssemblyName.GetAssemblyName var an = AssemblyName.GetAssemblyName(assemblyFileInfo.FullName); frameworkInfo.Assemblies.Add(new AssemblyInfo(an.Name, assemblyFileInfo.FullName)); #else frameworkInfo.Assemblies.Add(new AssemblyInfo(assemblyFileInfo.Name, assemblyFileInfo.FullName)); #endif } catch (Exception ex) { // Probably not a valid assembly Trace.TraceError(ex.Message); } } } cache[frameworkName] = frameworkInfo; } } }
public FrameworkReferenceResolver(IGlobalAssemblyCache globalAssemblyCache) { _globalAssemblyCache = globalAssemblyCache; _cache = PopulateCache(globalAssemblyCache); }
private static void PopulateReferenceAssemblies(string path, IGlobalAssemblyCache globalAssemblyCache, IDictionary<FrameworkName, FrameworkInformation> cache) { var di = new DirectoryInfo(path); if (!di.Exists) { return; } foreach (var d in di.EnumerateDirectories()) { if (d.Name.StartsWith("v")) { continue; } foreach (var v in d.EnumerateDirectories()) { var frameworkInfo = new FrameworkInformation(); var frameworkName = new FrameworkName(d.Name, new Version(v.Name.TrimStart('v'))); var facadePath = Path.Combine(v.FullName, "RuntimeFacades"); string redistList = Path.Combine(v.FullName, "RedistList", "FrameworkList.xml"); if (File.Exists(redistList)) { foreach (var assemblyName in GetFrameworkAssemblies(redistList)) { var assemblyPath = Path.Combine(v.FullName, assemblyName + ".dll"); if (!File.Exists(assemblyPath)) { // Check the gac fror full framework only if (frameworkName.Identifier == VersionUtility.DefaultTargetFramework.Identifier) { if (!globalAssemblyCache.TryResolvePartialName(assemblyName, out assemblyPath)) { continue; } } else { continue; } } frameworkInfo.Assemblies.Add(new AssemblyInfo(assemblyName, assemblyPath)); } } else { foreach (var assemblyFileInfo in v.EnumerateFiles("*.dll")) { try { #if DESKTOP // CORECLR_TODO: AssemblyName.GetAssemblyName var an = AssemblyName.GetAssemblyName(assemblyFileInfo.FullName); frameworkInfo.Assemblies.Add(new AssemblyInfo(an.Name, assemblyFileInfo.FullName)); #else frameworkInfo.Assemblies.Add(new AssemblyInfo(assemblyFileInfo.Name, assemblyFileInfo.FullName)); #endif } catch (Exception ex) { // Probably not a valid assembly Trace.TraceError(ex.Message); } } } cache[frameworkName] = frameworkInfo; } } }
private static IDictionary<FrameworkName, FrameworkInformation> PopulateCache(IGlobalAssemblyCache globalAssemblyCache) { var info = new Dictionary<FrameworkName, FrameworkInformation>(); #if DESKTOP string defaultPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), @"Reference Assemblies\Microsoft\Framework\"); PopulateReferenceAssemblies(defaultPath, globalAssemblyCache, info); // Additional profile paths var profilePaths = Environment.GetEnvironmentVariable("PROFILE_PATHS"); if (profilePaths != null) { foreach (var profilePath in profilePaths.Split(';')) { PopulateReferenceAssemblies(profilePath, globalAssemblyCache, info); } } #endif foreach (var frameworkDirectory in GetFrameworkDirectories()) { if (Directory.Exists(frameworkDirectory)) { PopulateReferenceAssemblies(frameworkDirectory, globalAssemblyCache, info); } } return info; }