Friday, April 3, 2015

C# 참조된 모든 어셈블리 보기

using System;
using System.Reflection;
using System.Collections;
public class DependencyReporter
{
    static void Main(string[] args)
    {
        try
        {
            if (args.Length == 0)
            {
                Console.WriteLine
                ("Usage: DependencyReporter <assembly1> [assembly2 ...]");
            }
            Hashtable alreadyLoaded = new Hashtable();
            foreach (string name in args)
            {
                Assembly assm = Assembly.LoadFrom(name);
                DumpAssembly(assm, alreadyLoaded, 0);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: {0}", e.Message);
        }
    }
    static void DumpAssembly(Assembly assm, Hashtable alreadyLoaded,
    int indent)
    {
        Console.Write(new String(' ', indent));
        AssemblyName fqn = assm.GetName();
        if (alreadyLoaded.Contains(fqn.FullName))
        {
            Console.WriteLine("[{0}]", fqn.Name);
            return;
        }
        alreadyLoaded[fqn.FullName] = fqn.FullName;
        Console.WriteLine(fqn.Name);
        foreach (AssemblyName name in assm.GetReferencedAssemblies())
        {
            Assembly referenced = Assembly.Load(name);
            DumpAssembly(referenced, alreadyLoaded, indent + 2);
        }
    }
}

No comments:

Post a Comment