2013-06-11 11 views
19

Szukam sposobu na znalezienie domyślnego app domain w moim procesie. Uwaga: obecna domena aplikacji może różnić się od domyślnej, na przykład, gdy mój kod jest uruchomiony wewnątrz NUnit.Uzyskiwanie dostępu do domyślnej domeny aplikacji

Wiem, że mogę wymienić wszystkie domeny aplikacji w procesie przy użyciu a COM interop trick shown in this answer i wybrać tę, dla której IsDefaultAppDomain() jest true. Jednak wydaje się to być rozwiązaniem ciężkim.

Czy można uzyskać domyślne appdomain, które nie wymaga filtrowania wszystkich domen, najlepiej bez interakcji COM?

+4

Użyliśmy powyższej sztuczki COM Interop; Zastanawiam się jednak, czy możliwe jest przechowywanie domyślnej domeny aplikacji jako punktu odniesienia w momencie uruchamiania aplikacji (powiedzmy w "Main") i po prostu to sprawdzić? – dash

+0

Tak, można utworzyć zespół neutralny dla domeny, aw tym zestawie można zapisać odniesienie do domyślnej wartości AppDomain (w niektórych statycznych właściwościach). –

+0

@ M.A.Hanin Czy mógłbyś zilustrować to podejście, a może dodać odpowiedź, która pokazuje, jak to zrobić? Dzięki! – dasblinkenlight

Odpowiedz

2

Według mojej wiedzy, ramy tego nie wspierają. Będziesz musiał użyć niezarządzanego rozwiązania, które je obsługuje.

+0

Wpis na blogu MSDN z 2007 roku mówi: Ponieważ pokazywałem izolację i zdolność do wyładowania, chciałem wyliczyć AppDomain w bieżącym procesie. ** Co zaskakujące, nie ma zarządzanego API w BCL, aby pokazać AppDomains. ** Korzystając z Interop możemy jednak podać AppDomains http://blogs.msdn.com/b/jackg/archive/2007/06/11/enumerating-appdomains.aspx – Gebb

Powiązane problemy