Szenarien für die Reflektionsausgabe mit dynamischen Assemblies

Aktualisiert: November 2007

Die Reflexionsausgabe unterstützt das Erzeugen dynamischer Module, die in dynamischen Assemblies definiert sind. Ein solches Modul kann flüchtig oder dauerhaft sein.

Einschränkungen für Typverweise

Assemblys können auf Typen verweisen, die in einer anderen Assembly definiert sind. Eine flüchtige dynamische Assembly kann problemlos auf Typen verweisen, die sich in einer anderen dynamischen, dauerhaften dynamischen oder statischen Assembly befinden. Die Common Language Runtime gestattet einem dauerhaften dynamischen Modul jedoch nicht, auf einen Typ zu verweisen, der in einem flüchtigen dynamischen Modul definiert ist. Dies liegt daran, dass die Common Language Runtime die Verweise auf Typen nicht auflösen kann, wenn das dynamische Modul geladen wird, nachdem es auf der Festplatte gespeichert wurde.

Einschränkungen bei der Ausgabe an Remoteanwendungsdomänen

In einigen Szenarien ist es erforderlich, dass eine dynamische Assembly in einer Remoteanwendungsdomäne erstellt und ausgeführt wird. Die Reflektionsausgabe lässt die Ausgabe einer dynamischen Assembly direkt an eine Remoteanwendungsdomäne nicht zu. Dieses Problem kann gelöst werden, indem die dynamische Assembly in der aktuellen Anwendungsdomäne ausgegeben, die ausgegebene dynamische Assembly auf der Festplatte gespeichert und anschließend in die Remoteanwendungsdomäne geladen wird.

Zugriffsmodi auf dynamische Assemblys

Dynamische Assemblys können mithilfe eines der folgenden Zugriffsmodi erstellt werden:

  • Run

    Die durch einen AssemblyBuilder dargestellte dynamische Assembly ist flüchtig. Die dynamische Anweisung kann nur zur Ausführung des ausgegebenen Codes verwendet werden.

  • Save

    Eine durch einen AssemblyBuilder repräsentierte dynamische Assembly ist dauerhaft, kann jedoch nicht ausgeführt werden, bis die gespeicherte PE (Portable Executable)-Datei von der Festplatte geladen wurde.

  • RunAndSave

    Eine durch einen AssemblyBuilder repräsentierte dynamische Assembly ist dauerhaft, kann aber auch vor und/oder nach dem Speichern der Assembly auf die Festplatte ausgeführt werden.

Der Zugriffsmodus muss bei der Definition der dynamischen Assembly angegeben werden. Er kann später nicht mehr geändert werden. Die Common Language Runtime verwendet den Zugriffsmodus einer dynamischen Assembly, um die interne Repräsentation der Assembly zu optimieren.

Siehe auch

Weitere Ressourcen

Ausgeben von dynamischen Methoden und Assemblys

Verwenden der Reflektionsausgabe