Перечислите домены приложений в процессе, выполняющем Silverlight, в дополнение к полной платформе .NET - PullRequest
0 голосов
/ 18 апреля 2019

Этот вопрос является прямым продолжением Список доменов приложений в процессе

К сожалению, он показывает только домены приложений, соответствующие полной .NET Framework.Мой процесс также загружен 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 enter image description here

Таким образом, он не сообщает ни о каких доменах приложений для Silverlight, и, похоже, mscoree.tlb для Silverlight.

IsЕсть ли надежный способ перечислить все домены приложений для всех .NET CLR, загруженных в процесс?Или, по крайней мере, только Silverlight.

...