コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }