Find out dependencies of all DLLs?

前端 未结 6 1193
北恋
北恋 2020-12-28 12:57

I have a collection of DLLs(say 20). How do I find out all the DLLs on which one specific DLL (say DLL A) is depending upon?

6条回答
  •  一向
    一向 (楼主)
    2020-12-28 13:46

    All answer credit goes to previous authors for the usage of Assembly.GetReferencedAssemblies. This is just a write-and-forget C# console app that works solely for .NET assemblies. return 0 on assemblies you were able to check, and when successful, outputs them to STDOUT. Everything else will return 1 and print some kind of error output. You can grab the gist here.

    using System;
    using System.Reflection;
    using System.IO;
    namespace DotNetInspectorGadget
    {
        class DotNetInspectorGadget 
        {
            static int Main(string[] args) 
            {
              if(args.GetLength(0) < 1)
              {
                Console.WriteLine("Add a single parameter that is your" +
                " path to the file you want inspected.");
                return 1;
              }
              try {
                    var assemblies = Assembly.LoadFile(@args[0]).GetReferencedAssemblies();
    
                    if (assemblies.GetLength(0) > 0)
                    {
                      foreach (var assembly in assemblies)
                      {
                        Console.WriteLine(assembly);
                      }
                      return 0;
                    }
              }
              catch(Exception e) {
                Console.WriteLine("An exception occurred: {0}", e.Message);
                return 1;
              } finally{}
    
                return 1;
            }
        }
    }
    

    Usage:

    call %cd%\dotnet_inspector_gadget.exe C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.ConfigCI.Commands\v4.0_10.0.0.0__31bf3856ad364e35\Microsoft.ConfigCI.Commands.dll
    

    Output:

    mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
    

提交回复
热议问题