c#application:如何查看加载的程序集

时间:2009-12-11 05:14:07

标签: c# .net

depends.exe工具可以遍历可执行文件所依赖的所有dll,但如果在运行时动态地由Assembly类加载DLL,我如何才能看到已加载的DLL(程序集)?

4 个答案:

答案 0 :(得分:6)

作为快照:

AppDomain.CurrentDomain.GetAssemblies()

当他们发生时:

AppDomain.CurrentDomain.AssemblyLoad

类似的东西:

static void Main()
{
    AppDomain.CurrentDomain.AssemblyLoad += AssemblyLoad;
    LogCurrent("before");
    AnotherMethod();
    LogCurrent("after");
}
static void AnotherMethod()
{
    // to force stuff to happen
    new System.Data.SqlClient.SqlCommand().Dispose(); 
}
static void LogCurrent(string caption)
{
    foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
    {
        Console.WriteLine(caption + ": " + asm.FullName);
    }
}

static void AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
    Console.WriteLine("Loaded: " + args.LoadedAssembly.FullName);
}

答案 1 :(得分:4)

假设你没有搞乱AppDomains:

AppDomain.CurrentDomain.GetAssemblies();

答案 2 :(得分:1)

你说你在寻找外部工具吗?尝试使用SOS调试扩展的WinDbg; http://msdn.microsoft.com/en-us/library/bb190764.aspx

还有其他工具可能更容易使用,提供相同级别的详细信息。我认为JetBrains的人有一个(Resharper)

答案 3 :(得分:1)

fuslogw可以帮助解决这个问题,它有一个监视所有程序集绑定的选项 http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx