IEnumerable <Base.ISearchItem> Prepare(AssemblyPublic assemblyPublic, HashSet <string> namespaces) { foreach (var c in publicApiStorage.LoadClasses(assemblyPublic.Id)) { namespaces.Add(c.Namespace); yield return(new Processing.SearchItem(assemblyPublic, splitStringStore.Store(c.FullName), c.IsPublic)); } }
public IEnumerable <(AssemblyPublic, Class[])> Extract(string filePath) { var readerParameters = new ReaderParameters(); var resolver = new DefaultAssemblyResolver(); var assLocation = typeof(CecilProcessor).GetTypeInfo().Assembly.Location; var assDir = Path.GetDirectoryName(assLocation); var targetDirFolder = Path.GetDirectoryName(filePath); resolver.AddSearchDirectory(targetDirFolder); resolver.AddSearchDirectory(assDir); foreach (var resolvePath in Environment.GetCommandLineArgs().Where(w => w.ToLower().StartsWith("-cecilrefpath:"))) { resolver.AddSearchDirectory(resolvePath.Substring("-cecilRefPath:".Length)); } readerParameters.AssemblyResolver = resolver; if (new FileInfo(filePath).Exists == false) { if (new FileInfo(Path.Combine(assDir, filePath)).Exists) { filePath = Path.Combine(assDir, filePath); } } var assDef = AssemblyDefinition.ReadAssembly(filePath, readerParameters); var res = new AssemblyPublic() { FullName = assDef.FullName }; var classes = assDef.Modules.SelectMany(module => extractors.SelectMany(e => e.ExtractClasses(module))) .ToArray(); yield return(res, classes); }
public SearchItem(AssemblyPublic assemblyPublic, SplitStringStore.Item fullClassName, bool isPublic) { this.Assembly = assemblyPublic; this.fullClassName = fullClassName; this.IsPublic = isPublic; }