在完整的.NET框架之外,在运行Silverlight的进程中列出AppDomain

时间:2019-04-18 15:03:30

标签: .net silverlight process appdomain

这个问题是List AppDomains in Process

的直接延续

不幸的是,它仅显示与完整.NET框架相对应的AppDomain。我的进程也加载了Silverlight(请不要问为什么)。

请注意:

代码(从帖子中复制):

private static IList<AppDomain> GetAppDomains()
{
    IntPtr enumHandle = IntPtr.Zero;
    var host = new CorRuntimeHost();
    try
    {
        host.EnumDomains(out enumHandle);
        object domain = null;
        IList<AppDomain> list = new List<AppDomain>();
        for (; ; )
        {
            host.NextDomain(enumHandle, out domain);
            if (domain == null)
            {
                break;
            }
            list.Add((AppDomain)domain);
        }
        return list;
    }
    finally
    {
        host.CloseEnum(enumHandle);
        Marshal.ReleaseComObject(host);
    }
}

用法

foreach (var appDomain in GetAppDomains())
{
    Debug.WriteLine(appDomain.FriendlyName);
}

结果

testhost.x86.exe
domain-b4a1a71-DFDeploymentSmokeTests.dll

Process Explorer报告的实际AppDomains enter image description here

因此,它不报告Silverlight的任何AppDomain,并且似乎没有针对Silverlight的mscoree.tlb。

是否存在一种健壮的方法来列出加载到进程中的所有.NET CLR中的所有AppDomain?或至少只是Silverlight的。

0 个答案:

没有答案