Этот вопрос является прямым продолжением Список доменов приложений в процессе
К сожалению, он показывает только домены приложений, соответствующие полной .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
Таким образом, он не сообщает ни о каких доменах приложений для Silverlight, и, похоже, mscoree.tlb для Silverlight.
IsЕсть ли надежный способ перечислить все домены приложений для всех .NET CLR, загруженных в процесс?Или, по крайней мере, только Silverlight.