Beispiel #1
0
        int InternalExecute()
        {
            var folderValue = folder.HasValue() ? folder.Value() : Directory.GetCurrentDirectory();

            if (!Directory.Exists(folderValue))
            {
                this.ShowHelp();
                OutputError($"Folder {folderValue} does not exist");
                return(1);
            }

            var referencesAssemblyCollection = ReferencedAssemblyCollection.BuildFromDirectory(folderValue);

            var selectedOutputType = outputType.HasValue() ? outputType.Value().ToLowerInvariant() : "console";

            var assemblyList = displayAll.HasValue() ? referencesAssemblyCollection.GetAll() : referencesAssemblyCollection.GetConflicts();

            switch (selectedOutputType)
            {
            case "json":
                break;

            default:
                Out.WriteLine($"Scanning folder '{folderValue}'");
                OutputToOutChannel(assemblyList);
                break;
            }

            return(0);
        }
Beispiel #2
0
        public static ReferencedAssemblyCollection BuildFromDirectory(string path)
        {
            var collection = new ReferencedAssemblyCollection();

            foreach (var file in Directory.GetFiles(path, "*.dll"))
            {
                try
                {
#if NETCOREAPP
                    var asm = Assembly.LoadFrom(file);
#else
                    var asm = Assembly.ReflectionOnlyLoadFrom(file);
#endif

                    if (asm.GetName().Version.ToString() != "0.0.0.0")
                    {
                        foreach (var reference in asm.GetReferencedAssemblies())
                        {
                            if (reference.Version.ToString() != "0.0.0.0")
                            {
                                if (!collection.assemblies.TryGetValue(reference.Name, out var referencedAssembly))
                                {
                                    referencedAssembly = new ReferencedAssembly(reference.Name);
                                    collection.assemblies.Add(referencedAssembly.Name, referencedAssembly);
                                }
                                referencedAssembly.RegisterDependency(asm.GetName(), reference.Version);
                            }
                        }
                    }
                }
                catch (BadImageFormatException)
                {
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }

            return(collection);
        }