public void calculateDependenciesForAssembly(string dllToProcess) //getDependenciesForAssembly() { if (false == processedAssemblies.Contains(dllToProcess)) // only handle each dll once { if (CecilUtils.isDotNetAssembly(dllToProcess, false)) { processedAssemblies.add(dllToProcess); var assemblyDefinition = CecilUtils.getAssembly(dllToProcess); addAssemblyToDependenciesList(assemblyDefinition.Name.FullName, dllToProcess); var modulesInDll = CecilUtils.getModules(assemblyDefinition); if (modulesInDll != null) { foreach (ModuleDefinition module in modulesInDll) { foreach (AssemblyNameReference assemblyNameReference in module.AssemblyReferences) { //DI.log.info("{0} - {1} ", dllToProcess, assemblyNameReference.Name); string mappedNameToTargetDllDirectory = tryToFindReferencedDllInProvidedReferenceSearchPaths(assemblyNameReference.Name); addAssemblyToDependenciesList(assemblyNameReference.FullName, mappedNameToTargetDllDirectory); // recursively search on each of these dlls since we need to find all dependent dlls calculateDependenciesForAssembly(mappedNameToTargetDllDirectory); } } } } } // log.info("There were {0} assemblyDependencies discovered", assemblyDependencies.Count); //return assemblyDependencies; }
public static Dictionary <string, string> getDictionaryOfDependenciesForAssembly_WithNoRecursiveSearch(string assembly) { var results = new Dictionary <string, string>(); try { var assemblyDefinition = CecilUtils.getAssembly(assembly); if (assemblyDefinition != null) { var modulesInDll = CecilUtils.getModules(assemblyDefinition); if (modulesInDll != null) { foreach (ModuleDefinition module in modulesInDll) { foreach (AssemblyNameReference assemblyNameReference in module.AssemblyReferences) { results.Add(assemblyNameReference.FullName, assemblyNameReference.Name); } } } } } catch (Exception ex) { PublicDI.log.error("in getListOfDependenciesForAssembly_WithNoRecursiveSearch: {0}", ex.Message); } return(results); }