/// <summary> /// Gets a collection of packages available from executable references after having /// filtered them by the excluded namespaces. /// </summary> /// <param name="exclusions">A collection of namespaces excluded from the analysis.</param> public IEnumerable <PortableExecutableWrapper> GetExecutables(NamespaceExclusionList exclusions) { var wrappers = new List <PortableExecutableWrapper>(); foreach (var reference in _context.GetExecutableReferences()) { var path = reference.FilePath; if (path is null) { _logger.LogError($"Failed to load referenced assembly: {reference.Display ?? "<unknown>"}"); continue; } var assembly = _context.Load(path); var ns = GetNamespace(assembly); if (ns is null) { _logger.LogVerbose($"Skipping referenced assembly: {reference.Display ?? "<unknown>"}. It has not exported types."); continue; } if (exclusions.IsExcluded(ns)) { _logger.LogVerbose($"Skipping referenced assembly: {reference.Display ?? "<unknown>"}. The exported types are excluded."); continue; } wrappers.Add(new PortableExecutableWrapper(reference, assembly)); } return(wrappers); }
public IEnumerable <PortableExecutableWrapper> GetExecutables(NamespaceExclusionList exclusions) { var resolver = new PortableExecutableResolver(this, _logger); return(resolver.GetExecutables(exclusions)); }