2013-06-11 15 views
19

Sto cercando un modo per trovare il valore predefinito app domain nel mio processo. Nota che il dominio dell'app corrente potrebbe essere diverso da quello predefinito, ad esempio quando il mio codice è in esecuzione all'interno di NUnit.Accesso al dominio dell'app predefinito

So che posso elencare tutti i domini dell'app nel processo utilizzando a COM interop trick shown in this answer e scegliere quello per cui IsDefaultAppDomain() è true. Tuttavia, questo sembra una soluzione pesante.

C'è un modo per ottenere l'appadominio predefinito che non richiede il filtraggio di tutti i domini, preferibilmente senza passare attraverso l'interoperabilità COM?

+4

Abbiamo utilizzato il suddetto trucco di interoperabilità COM; tuttavia, mi chiedo se sia possibile archiviare il dominio dell'app predefinito come riferimento da qualche parte all'avvio dell'app (diciamo in "Principale"), e basta guardarlo? – dash

+0

Sì, è possibile creare un assembly neutrale al dominio e in quell'assembly è possibile memorizzare un riferimento all'AppDomain predefinito (in alcune proprietà statiche). –

+0

@ M.A.Hanin Ti dispiacerebbe illustrare questo approccio, o magari aggiungere una risposta che mostra come farlo? Grazie! – dasblinkenlight

risposta

2

A mia conoscenza, il framework non supporta questo. Dovresti usare la soluzione non gestita che lo supporta.

+0

Un post del blog MSDN risalente al 2007 dice questo: poiché mostravo l'isolamento e la capacità di scarico, volevo enumerare gli AppDomain nel processo corrente. ** Sorprendentemente non c'è alcuna API gestita nel BCL da mostrare AppDomains. ** Tuttavia, utilizzando Interop, è possibile elencare gli AppDomain. Http://blogs.msdn.com/b/jackg/archive/2007/06/11/enumerating-appdomains.aspx – Gebb

Problemi correlati