2010-04-14 11 views
24

Come sviluppatore .NET, la lineaChe cos'è esattamente l''Assembly DynamicMethods in hosting anonimo' e come posso caricarlo manualmente?

'<process name>' (Managed): Loaded 'Anonymously Hosted DynamicMethods Assembly' 

probabilmente è familiare a voi. La mia domanda è semplice e diretta: cos'è esattamente questo "DynamicMethods Assembly" ospitato in modo anonimo e posso farlo (pre) caricare manualmente? Se é cosi, come? Questo può essere fatto tramite Assembly.Load (...)?

+1

Non mi è familiare! Ma l'ho appena visto e vorrei sapere di cosa si tratta. –

risposta

27

System.Reflection.Emit contiene classi che consentono di creare codice generato dinamicamente emettendo istruzioni IL. Le classi DynamicMethod e AssemblyBuilder sono i cavalli di lavoro per farlo. IL normalmente viene caricato da un assieme, ma non vi è alcun assemblaggio quando si genera l'IL dinamicamente. Un oggetto assembly è tuttavia necessario per fungere da contenitore del codice IL e uno "falso" viene creato da AppDomain.DefineDynamicAssembly(). Questo è ciò che vedi nella notifica del debugger.

Non è possibile utilizzare Assembly.Load(), l'assieme viene creato dinamicamente.

+0

Grazie per la risposta. C'è un modo per determinare quando viene creato questo oggetto assembly creato dinamicamente? – dbaw

+0

La notifica del debugger è un buon suggerimento. –

+0

dispiace, volevo dire 'determinare' come in 'influenza', non e 'identificare' :-) Quindi potrebbe un anticipo o ritardare il caricamento di oggetti di assemblaggio dinamici? – dbaw

2

Questo è per DynamicMethods e quindi vale anche per le espressioni.

Non è possibile caricarlo manualmente.

+5

Beh, perché no? :-) – dbaw

0

Immagino che questo sia un assembly emesso in fase di esecuzione. Poiché non è necessario per salvare l'assieme di disco, potrebbe non essere possibile caricare manualmente (in questo caso, quando il codice termina emettendo il gruppo - in memoria - userà i tipi definiti nel montaggio diretta - nessuna necessità di caricare qualsiasi cosa)

Per ulteriori informazioni vedere documentation in msdn.

Best

Problemi correlati