コード例 #1
0
        void Import(string file, HashSet <string> files)
        {
            var bestMatchedFile = _assemblyPaths.FindBestMatchFor(file);

            try
            {
                var filesToImport = GetFilesFor(_assemblyPaths, bestMatchedFile);
                foreach (var fileToAdd in filesToImport)
                {
                    if (!files.Add(fileToAdd))
                    {
                        return;
                    }
                }

                var module = ModuleDefinition.ReadModule(bestMatchedFile);
                foreach (var assemblyReference in module.AssemblyReferences)
                {
                    var referenceFile = $"{assemblyReference.Name}.dll";
                    referenceFile = _rootAssemblyPaths
                                    .SingleOrDefault(_ =>
                                                     Path.GetFileName(_).Equals(referenceFile, StringComparison.InvariantCultureIgnoreCase)) ?? referenceFile;

                    Import(referenceFile, files);
                }
            }
            catch (Exception ex)
            {
                _skippedImports.Add(new SkippedImport(file, ex.Message));
            }
        }
コード例 #2
0
        IEnumerable <string> GetFilesFor(AssemblyPaths paths, string path)
        {
            var files = new List <string>();

            path = paths.FindBestMatchFor(path);
            if (File.Exists(path))
            {
                files.Add(path);

                var pdbFile = Path.ChangeExtension(path, ".pdb");
                if (File.Exists(pdbFile))
                {
                    files.Add(pdbFile);
                }
            }
            return(files);
        }