2010-04-14 3 views
24

Als .NET-Entwickler, die LinieWas genau ist die "Anonymous Hosted DynamicMethods Assembly" und wie kann ich sie manuell laden?

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

wahrscheinlich ist Ihnen vertraut. Meine Frage ist einfach und unkompliziert: Was genau ist diese 'Anonymous Hosted DynamicMethods Assembly' und kann ich sie (vor) manuell laden? Wenn das so ist, wie? Kann dies über Assembly.Load (...) geschehen?

+1

Es ist mir nicht bekannt! Aber ich habe es gerade gesehen und würde gerne wissen, was es ist. –

Antwort

27

System.Reflection.Emit enthält Klassen, mit denen Sie dynamisch generierten Code durch Ausgabe von IL-Anweisungen erstellen können. Die DynamicMethod- und AssemblyBuilder-Klassen sind die Arbeitspferde dafür. IL wird normalerweise von einer Assembly geladen, aber es gibt keine Assembly, wenn Sie die IL dynamisch generieren. Ein Assembly-Objekt wird jedoch benötigt, um als der Container des IL-Codes zu fungieren, und ein "falsches" wird von AppDomain.DefineDynamicAssembly() erstellt. Das sehen Sie in der Debugger-Benachrichtigung.

Sie können Assembly.Load() nicht verwenden, die Assembly wird dynamisch erstellt.

+0

Danke für deine Antwort. Gibt es eine Möglichkeit zu bestimmen, wann dieses dynamisch erstellte Assembly-Objekt erstellt wird? – dbaw

+0

Die Debugger-Benachrichtigung ist ein guter Tipp. –

+0

Entschuldigung, ich meinte "bestimmen" wie in "Einfluss", nicht "identifizieren" :-) Also könnte man das Laden von dynamischen Baugruppenobjekten beschleunigen oder verzögern? – dbaw

2

Dies ist für DynamicMethods und damit auch für Ausdrücke.

Sie können es nicht manuell laden.

+5

Nun, warum nicht? :-) – dbaw

0

Ich vermute, dass dies eine Baugruppe ist, die zur Laufzeit emittiert wird. Da es nicht erforderlich ist, die Assembly auf der Festplatte zu speichern, ist es möglicherweise nicht möglich, sie manuell zu laden (in diesem Fall, wenn der Code die Assembly ausgibt - in den Speicher - verwendet er direkt die in der Assembly definierten Typen) alles)

Weitere Informationen finden Sie unter documentation in msdn.

Beste