我正在尋找一種方法來查找我的過程中的默認app domain。請注意,當前的應用程序域可能與默認的不同,例如當我的代碼在NUnit
內運行時。訪問默認應用程序域
我知道我可以使用a COM interop trick shown in this answer列出進程中的所有應用程序域,並選擇其中IsDefaultAppDomain()
爲true
的那個。但是,這似乎是一個重量級的解決方案。
有沒有辦法讓默認的appdomain不需要過濾所有的域,最好不經過COM interop?
我正在尋找一種方法來查找我的過程中的默認app domain。請注意,當前的應用程序域可能與默認的不同,例如當我的代碼在NUnit
內運行時。訪問默認應用程序域
我知道我可以使用a COM interop trick shown in this answer列出進程中的所有應用程序域,並選擇其中IsDefaultAppDomain()
爲true
的那個。但是,這似乎是一個重量級的解決方案。
有沒有辦法讓默認的appdomain不需要過濾所有的域,最好不經過COM interop?
據我所知,該框架並不支持。您將不得不使用支持它的非託管解決方案。
一個追溯到2007年的MSDN博客文章說:當我顯示隔離和卸載能力時,我想枚舉當前進程中的AppDomain。**令人驚訝的是BCL中沒有託管API可以顯示AppDomains。**但是,使用Interop,我們可以列出AppDomains。http://blogs.msdn.com/b/jackg/archive/2007/06/11/enumerating-appdomains.aspx – Gebb
我們已經使用了上面的COM Interop技巧;然而,我想知道是否有可能在你的應用程序啓動時(例如在'Main'中)將默認應用程序域作爲參考存儲在某個地方,然後查看它? – dash
是的,您可以創建一個與域無關的程序集,並且在該程序集中可以存儲對默認AppDomain的引用(在某些靜態屬性中)。 –
@ M.A.Hanin您是否介意說明這種方法,或者添加一個答案來說明如何做到這一點?謝謝! – dasblinkenlight