AppDomain.DefineDynamicAssembly Methode

Definition

Definiert eine dynamische Assembly in der aktuellen Anwendungsdomäne.

Überlädt

Name Beschreibung
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Veraltet.

Definiert eine dynamische Assembly mit dem angegebenen Namen, zugriffsmodus, Speicherverzeichnis, Nachweis, Berechtigungsanforderungen, Synchronisierungsoption und benutzerdefinierten Attributen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)
Veraltet.

Definiert eine dynamische Assembly unter Verwendung des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses, des Nachweises, der Berechtigungsanforderungen und der Synchronisierungsoption.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)
Veraltet.

Definiert eine dynamische Assembly unter Verwendung des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses, des Nachweises und der Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)
Veraltet.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)
Veraltet.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Nachweises und der Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Synchronisierungsoption.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)
Veraltet.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und der Berechtigungsanforderungen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)
Veraltet.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Nachweise.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)

Definiert eine dynamische Assembly mit dem angegebenen Namen, dem Zugriffsmodus und benutzerdefinierten Attributen und der Verwendung der angegebenen Quelle für den Sicherheitskontext.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und des Speicherverzeichnisses.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Veraltet.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und der Nachweise.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Definiert eine dynamische Assembly mit dem angegebenen Namen, dem Zugriffsmodus und benutzerdefinierten Attributen.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Definiert eine dynamische Assembly mit dem angegebenen Namen und dem Zugriffsmodus.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly mit dem angegebenen Namen, zugriffsmodus, Speicherverzeichnis, Nachweis, Berechtigungsanforderungen, Synchronisierungsoption und benutzerdefinierten Attributen.

public:
 System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions, bool isSynchronized, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet, isSynchronized As Boolean, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die dynamische Assembly gespeichert wird. Ist dir dies nullder Grund, wird das aktuelle Verzeichnis verwendet.

evidence
Evidence

Der Nachweis, der für die dynamische Assembly bereitgestellt wird. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

isSynchronized
Boolean

trueum die Erstellung von Modulen, Typen und Elementen in der dynamischen Assembly zu synchronisieren; andernfalls . false

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Eine aufzählbare Liste von Attributen, die auf die Assembly angewendet werden sollen, oder null wenn keine Attribute vorhanden sind.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name Beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder hinten.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Hinweise

Verwenden Sie diese Methodenüberladung, um Attribute anzugeben, die nicht ordnungsgemäß funktionieren, es sei denn, sie werden angewendet, wenn eine dynamische Assembly erstellt wird. Sicherheitsattribute wie z SecurityTransparentAttribute . B. und SecurityCriticalAttribute funktionieren nicht ordnungsgemäß, wenn sie hinzugefügt werden, nachdem eine dynamische Assembly erstellt wurde.

Die für die requiredPermissionsParameter und parameter optionalPermissions angegebenen Berechtigungsanforderungen werden nur verwendet, wenn der refusedPermissions Parameter ebenfalls angegeben wird, oder wenn die dynamische Assembly gespeichert und in den Speicher evidenceneu geladen wird.

Note

Wenn Sie Code entwickeln, der dynamische Assemblys ausgibt, empfiehlt es sich, das SecurityPermissionFlag.SkipVerification Flag in den refusedPermissions Parameter aufzunehmen. Durch die Einbeziehung dieser Kennzeichnung wird sichergestellt, dass die Microsoft Zwischensprache (MSIL) überprüft wird. Diese Technik erkennt die unbeabsichtigte Generierung unverifizierbarer Code, was andernfalls sehr schwierig zu erkennen ist. Eine Einschränkung dieser Technik besteht darin, dass sie auch SecurityException ausgelöst wird, wenn sie mit Code verwendet wird, der volle Vertrauenswürdigkeit erfordert.

Nur voll vertrauenswürdige Aufrufer können Nachweise beim Definieren einer dynamischen Assembly. Die Laufzeit ordnet die Evidence Sicherheitsrichtlinie zu, um die gewährten Berechtigungen zu bestimmen. Teilweise vertrauenswürdige Aufrufer müssen für den null Parameter bereitstellenevidence. Wenn evidence ja null, kopiert die Laufzeit die Berechtigungssätze (d. h. die aktuelle Berechtigungssätze und Verweigerungssätze) von der Assembly des Aufrufers in die dynamische Assembly, die definiert wird, und kennzeichnet die Richtlinie als aufgelöst.

Wenn die dynamische Assembly auf dem Datenträger gespeichert wird, erhalten nachfolgende Lasten Aufwendungen basierend auf Richtlinien, die dem Speicherort der dynamischen Assembly zugeordnet sind.

Wenn isSynchronized ja true, werden die folgenden Methoden des resultierenden AssemblyBuilder Vorgangs synchronisiert: DefineDynamicModule, , DefineResource, , AddResourceFile, GetDynamicModule, SetEntryPointund Save. Wenn zwei dieser Methoden für verschiedene Threads aufgerufen werden, wird eine blockiert, bis die andere abgeschlossen ist.

Diese Methodenüberladung wird in .NET Framework 3.5 eingeführt.

Weitere Informationen

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly unter Verwendung des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses, des Nachweises, der Berechtigungsanforderungen und der Synchronisierungsoption.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions, bool isSynchronized);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions, bool isSynchronized);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet * bool -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet, isSynchronized As Boolean) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die dynamische Assembly gespeichert wird. Wenn dir ja null, wird das Verzeichnis standardmäßig im aktuellen Verzeichnis gespeichert.

evidence
Evidence

Die für die dynamische Assembly bereitgestellten Nachweise. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

isSynchronized
Boolean

trueum die Erstellung von Modulen, Typen und Elementen in der dynamischen Assembly zu synchronisieren; andernfalls . false

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.

Definiert eine dynamische Assembly unter Verwendung des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses, des Nachweises und der Berechtigungsanforderungen.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  Please see http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die Assembly gespeichert wird. Wenn dir ja null, wird das Verzeichnis standardmäßig im aktuellen Verzeichnis gespeichert.

evidence
Evidence

Die für die dynamische Assembly bereitgestellten Nachweise. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Berechtigungsanforderungen.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die Assembly gespeichert wird. Wenn dir ja null, wird das Verzeichnis standardmäßig im aktuellen Verzeichnis gespeichert.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Nachweises und der Berechtigungsanforderungen.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::Policy::Evidence ^ evidence, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, evidence As Evidence, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

evidence
Evidence

Die für die dynamische Assembly bereitgestellten Nachweise. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Synchronisierungsoption.

public:
 System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, bool isSynchronized, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, bool isSynchronized, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * bool * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, isSynchronized As Boolean, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die dynamische Assembly gespeichert wird. Ist dir dies nullder Grund, wird das aktuelle Verzeichnis verwendet.

isSynchronized
Boolean

trueum die Erstellung von Modulen, Typen und Elementen in der dynamischen Assembly zu synchronisieren; andernfalls . false

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Eine aufzählbare Liste von Attributen, die auf die Assembly angewendet werden sollen, oder null wenn keine Attribute vorhanden sind.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name Beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder hinten.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Hinweise

Verwenden Sie diese Methodenüberladung, um Attribute anzugeben, die nicht ordnungsgemäß funktionieren, es sei denn, sie werden angewendet, wenn eine dynamische Assembly erstellt wird. Sicherheitsattribute wie z SecurityTransparentAttribute . B. und SecurityCriticalAttribute funktionieren nicht ordnungsgemäß, wenn sie hinzugefügt werden, nachdem eine dynamische Assembly erstellt wurde.

Wenn isSynchronized ja true, werden die folgenden Methoden des resultierenden AssemblyBuilder Vorgangs synchronisiert: DefineDynamicModule, , DefineResource, , AddResourceFile, GetDynamicModule, SetEntryPointund Save. Wenn zwei dieser Methoden für verschiedene Threads aufgerufen werden, wird eine blockiert, bis die andere abgeschlossen ist.

Weitere Informationen

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und der Berechtigungsanforderungen.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::PermissionSet ^ requiredPermissions, System::Security::PermissionSet ^ optionalPermissions, System::Security::PermissionSet ^ refusedPermissions);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.PermissionSet requiredPermissions, System.Security.PermissionSet optionalPermissions, System.Security.PermissionSet refusedPermissions);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.PermissionSet * System.Security.PermissionSet * System.Security.PermissionSet -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, requiredPermissions As PermissionSet, optionalPermissions As PermissionSet, refusedPermissions As PermissionSet) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

requiredPermissions
PermissionSet

Die erforderliche Berechtigungsanforderung.

optionalPermissions
PermissionSet

Die optionale Berechtigungsanforderung.

refusedPermissions
PermissionSet

Die Abgelehnte Berechtigungsanforderung.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)

Achtung

Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus, des Speicherverzeichnisses und der Nachweise.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir, System::Security::Policy::Evidence ^ evidence);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir, System.Security.Policy.Evidence evidence);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of DefineDynamicAssembly which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkId=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String, evidence As Evidence) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die Assembly gespeichert wird. Wenn dir ja null, wird das Verzeichnis standardmäßig im aktuellen Verzeichnis gespeichert.

evidence
Evidence

Die für die dynamische Assembly bereitgestellten Nachweise. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)

Definiert eine dynamische Assembly mit dem angegebenen Namen, dem Zugriffsmodus und benutzerdefinierten Attributen und der Verwendung der angegebenen Quelle für den Sicherheitskontext.

public:
 System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes, System::Security::SecurityContextSource securityContextSource);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes, System.Security.SecurityContextSource securityContextSource);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * seq<System.Reflection.Emit.CustomAttributeBuilder> * System.Security.SecurityContextSource -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder), securityContextSource As SecurityContextSource) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Zugriffsmodus für die dynamische Assembly.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Eine aufzählbare Liste von Attributen, die auf die Assembly angewendet werden sollen, oder null wenn keine Attribute vorhanden sind.

securityContextSource
SecurityContextSource

Die Quelle des Sicherheitskontexts.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name Beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder hinten.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Der Wert der securityContextSource Enumeration war nicht einer der Enumerationswerte.

Hinweise

Verwenden Sie diese Methodenüberladung, um Attribute anzugeben, die nicht ordnungsgemäß funktionieren, es sei denn, sie werden angewendet, wenn eine dynamische Assembly erstellt wird. Sicherheitsattribute wie z SecurityTransparentAttribute . B. und SecurityCriticalAttribute funktionieren nicht ordnungsgemäß, wenn sie hinzugefügt werden, nachdem eine dynamische Assembly erstellt wurde.

Diese Methode sollte nur verwendet werden, um eine dynamische Assembly in der aktuellen Anwendungsdomäne zu definieren. Weitere Informationen zu dieser Einschränkung finden Sie in der Load(AssemblyName) Methodenüberladung.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und des Speicherverzeichnisses.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::String ^ dir);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, string dir);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * string -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, dir As String) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

dir
String

Der Name des Verzeichnisses, in dem die Assembly gespeichert wird. Wenn dir ja null, wird das Verzeichnis standardmäßig im aktuellen Verzeichnis gespeichert.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Beispiele

Im folgenden Beispiel wird die Methode und DefineDynamicAssembly das AssemblyResolve Ereignis veranschaulicht.

Damit dieses Codebeispiel ausgeführt werden kann, müssen Sie den vollqualifizierten Assemblynamen angeben. Informationen zum Abrufen des vollqualifizierten Assemblynamens finden Sie unter Assemblynamen.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^ domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^ args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender) );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule" );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType", TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}
using System;
using System.Reflection;
using System.Reflection.Emit;

class DefinedDynamicAssemblySnippet {
   public static void Main() {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);

      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }

   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.

      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();

      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
open System
open System.Reflection
open System.Reflection.Emit

let instantiateMyDynamicType (domain: AppDomain) =
    try
        // You must supply a valid fully qualified assembly name here.
        domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
        |> ignore
    with e ->
        printfn $"{e.Message}"

let defineDynamicAssembly (domain: AppDomain) =
    // Build a dynamic assembly using Reflection Emit API.
    let assemblyName = AssemblyName()
    assemblyName.Name <- "MyDynamicAssembly"

    let assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
    let moduleBuilder = assemblyBuilder.DefineDynamicModule "MyDynamicModule"
    let typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
    let constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null)
    let ilGenerator = constructorBuilder.GetILGenerator()

    ilGenerator.EmitWriteLine "MyDynamicType instantiated!"
    ilGenerator.Emit OpCodes.Ret

    typeBuilder.CreateType() |> ignore

    assemblyBuilder

let myResolveEventHandler (sender: obj) _ =
    defineDynamicAssembly (sender :?> AppDomain)
    :> Assembly
   
let currentDomain = AppDomain.CurrentDomain

instantiateMyDynamicType currentDomain   // Failed!

currentDomain.add_AssemblyResolve(ResolveEventHandler myResolveEventHandler)

instantiateMyDynamicType currentDomain   // OK!

Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub
   
   Function MyResolveEventHandler(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender, AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test

Hinweise

Diese Methode sollte nur verwendet werden, um eine dynamische Assembly in der aktuellen Anwendungsdomäne zu definieren. Weitere Informationen finden Sie in der Load(AssemblyName) Methodenüberladung.

Note

Während der Entwicklung von Code, der dynamische Assemblys ausgibt, empfiehlt es sich, eine Überladung der DefineDynamicAssembly Methode zu verwenden, die Nachweise und Berechtigungen angibt, den Nachweis anzugeben, über den die dynamische Assembly verfügen soll, und in diese einzuschließen SecurityPermissionFlag.SkipVerificationrefusedPermissions. Durch Das Einschließen SkipVerification des refusedPermissions Parameters wird sichergestellt, dass die MSIL überprüft wird. Eine Einschränkung dieser Technik besteht darin, dass sie auch SecurityException ausgelöst wird, wenn sie mit Code verwendet wird, der volle Vertrauenswürdigkeit erfordert.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)

Achtung

Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Definiert eine dynamische Assembly mithilfe des angegebenen Namens, des Zugriffsmodus und der Nachweise.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Security::Policy::Evidence ^ evidence);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence);
[System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Security.Policy.Evidence evidence);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
[<System.Obsolete("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default.  See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * System.Security.Policy.Evidence -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, evidence As Evidence) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Modus, in dem auf die dynamische Assembly zugegriffen wird.

evidence
Evidence

Die für die dynamische Assembly bereitgestellten Nachweise. Der Beweis wird als endgültiger Beweissatz verwendet, der für die Politische Abwicklung verwendet wird.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Implementiert

Attribute

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Definiert eine dynamische Assembly mit dem angegebenen Namen, dem Zugriffsmodus und benutzerdefinierten Attributen.

public:
 System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access, System::Collections::Generic::IEnumerable<System::Reflection::Emit::CustomAttributeBuilder ^> ^ assemblyAttributes);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access, System.Collections.Generic.IEnumerable<System.Reflection.Emit.CustomAttributeBuilder> assemblyAttributes);
member this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess * seq<System.Reflection.Emit.CustomAttributeBuilder> -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess, assemblyAttributes As IEnumerable(Of CustomAttributeBuilder)) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Zugriffsmodus für die dynamische Assembly.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Eine aufzählbare Liste von Attributen, die auf die Assembly angewendet werden sollen, oder null wenn keine Attribute vorhanden sind.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und den angegebenen Features.

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name Beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder hinten.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie eine dynamische Assembly erstellen, die über die SecurityTransparentAttribute. Das Attribut muss als Element eines Arrays von CustomAttributeBuilder Objekten angegeben werden.

Der erste Schritt beim Erstellen der Datei CustomAttributeBuilder besteht darin, einen Konstruktor für das Attribut abzurufen. Der Konstruktor hat keine Parameter, sodass die GetConstructor Methode mit einem leeren Array von Type Objekten aufgerufen wird, um die Typen der Parameter darzustellen. Der zweite Schritt besteht darin, das resultierende ConstructorInfo Objekt an den Konstruktor für die CustomAttributeBuilder Klasse zu übergeben, zusammen mit einem leeren Array vom Typ Object , um die Argumente darzustellen.

Das Ergebnis CustomAttributeBuilder wird dann als einziges Element eines Arrays an die DefineDynamicAssembly Methode übergeben.

Der Beispielcode definiert ein Modul und einen Typ in der neuen dynamischen Assembly und zeigt dann die Attribute der Assembly an.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Security;

void main()
{
    // Create a CustomAttributeBuilder for the assembly attribute. 
    // 
    // SecurityTransparentAttribute has a parameterless constructor, 
    // which is retrieved by passing an array of empty types for the
    // constructor's parameter types. The CustomAttributeBuilder is 
    // then created by passing the ConstructorInfo and an empty array
    // of objects to represent the parameters.
    //
    ConstructorInfo^ transparentCtor = 
        SecurityTransparentAttribute::typeid->GetConstructor(
            Type::EmptyTypes);
    CustomAttributeBuilder^ transparent = gcnew CustomAttributeBuilder(
        transparentCtor,
        gcnew array<Object^> {} );
      
    // Create a dynamic assembly using the attribute. The attribute is
    // passed as an array with one element.
    AssemblyName^ aName = gcnew AssemblyName("EmittedAssembly");
    AssemblyBuilder^ ab = AppDomain::CurrentDomain->DefineDynamicAssembly( 
        aName, 
        AssemblyBuilderAccess::Run,
        gcnew array<CustomAttributeBuilder^> { transparent } );

    ModuleBuilder^ mb = ab->DefineDynamicModule( aName->Name );
    TypeBuilder^ tb = mb->DefineType( 
        "MyDynamicType", 
        TypeAttributes::Public );
    tb->CreateType();

    Console::WriteLine("{0}\nAssembly attributes:", ab);
    for each (Attribute^ attr in ab->GetCustomAttributes(true))
    {
        Console::WriteLine("\t{0}", attr);
    }
};

/* This code example produces the following output:

EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
        System.Security.SecurityTransparentAttribute
 */
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Security;

class CustomAttributeBuilderSnippet
{
    static void Main()
    {
        // Create a CustomAttributeBuilder for the assembly attribute.
        //
        // SecurityTransparentAttribute has a parameterless constructor,
        // which is retrieved by passing an array of empty types for the
        // constructor's parameter types. The CustomAttributeBuilder is
        // then created by passing the ConstructorInfo and an empty array
        // of objects to represent the parameters.
        //
        ConstructorInfo transparentCtor =
            typeof(SecurityTransparentAttribute).GetConstructor(
                Type.EmptyTypes);
        CustomAttributeBuilder transparent = new CustomAttributeBuilder(
            transparentCtor,
            new Object[] {} );

        // Create a dynamic assembly using the attribute. The attribute is
        // passed as an array with one element.
        AssemblyName aName = new AssemblyName("EmittedAssembly");
        AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(
            aName,
            AssemblyBuilderAccess.Run,
            new CustomAttributeBuilder[] { transparent } );

        ModuleBuilder mb = ab.DefineDynamicModule( aName.Name );
        TypeBuilder tb = mb.DefineType(
            "MyDynamicType",
            TypeAttributes.Public );
        tb.CreateType();

        Console.WriteLine("{0}\nAssembly attributes:", ab);
        foreach (Attribute attr in ab.GetCustomAttributes(true))
        {
            Console.WriteLine("\t{0}", attr);
        }
    }
}

/* This code example produces the following output:

EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
        System.Security.SecurityTransparentAttribute
 */
open System
open System.Reflection
open System.Reflection.Emit
open System.Security

// Create a CustomAttributeBuilder for the assembly attribute.
//
// SecurityTransparentAttribute has a parameterless constructor,
// which is retrieved by passing an array of empty types for the
// constructor's parameter types. The CustomAttributeBuilder is
// then created by passing the ConstructorInfo and an empty array
// of objects to represent the parameters.
//
let transparentCtor =
    typeof<SecurityTransparentAttribute>.GetConstructor(Type.EmptyTypes)
let transparent = CustomAttributeBuilder(transparentCtor, [||])

// Create a dynamic assembly using the attribute. The attribute is
// passed as an array with one element.
let aName = AssemblyName "EmittedAssembly"
let ab = AppDomain.CurrentDomain.DefineDynamicAssembly(
    aName,
    AssemblyBuilderAccess.Run,
    [| transparent |])

let mb = ab.DefineDynamicModule aName.Name
let tb = mb.DefineType(
    "MyDynamicType",
    TypeAttributes.Public )
tb.CreateType() |> ignore

printfn $"{ab}\nAssembly attributes:"
for attr in ab.GetCustomAttributes true do
    printfn $"\t{attr}"

(* This code example produces the following output:

EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Assembly attributes:
        System.Security.SecurityTransparentAttribute
 *)
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Security

Module Example

    Sub Main()
    
        ' Create a CustomAttributeBuilder for the assembly attribute. 
        ' 
        ' SecurityTransparentAttribute has a parameterless constructor, 
        ' which is retrieved by passing an array of empty types for the
        ' constructor's parameter types. The CustomAttributeBuilder is 
        ' then created by passing the ConstructorInfo and an empty array
        ' of objects to represent the parameters.
        '
        Dim transparentCtor As ConstructorInfo = _
            GetType(SecurityTransparentAttribute).GetConstructor( _
                Type.EmptyTypes)
        Dim transparent As New CustomAttributeBuilder( _
            transparentCtor, _
            New Object() {} )
      
        ' Create a dynamic assembly Imports the attribute. The attribute is
        ' passed as an array with one element.
        Dim aName As New AssemblyName("EmittedAssembly")
        Dim ab As AssemblyBuilder = _
            AppDomain.CurrentDomain.DefineDynamicAssembly( _
                aName, _
                AssemblyBuilderAccess.Run, _
                New CustomAttributeBuilder() { transparent } )

        Dim mb As ModuleBuilder = ab.DefineDynamicModule( aName.Name )
        Dim tb As TypeBuilder = mb.DefineType( _
            "MyDynamicType", _
            TypeAttributes.Public )
        tb.CreateType()

        Console.WriteLine("{0}" & vbLf & "Assembly attributes:", ab)
        For Each attr As Attribute In ab.GetCustomAttributes(True)
            Console.WriteLine(vbTab & "{0}", attr)
        Next
    End Sub
End Module

' This code example produces the following output:
'
'EmittedAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
'Assembly attributes:
'        System.Security.SecurityTransparentAttribute

Hinweise

Verwenden Sie diese Methodenüberladung, um Attribute anzugeben, die nicht ordnungsgemäß funktionieren, es sei denn, sie werden angewendet, wenn eine dynamische Assembly erstellt wird. Sicherheitsattribute wie z SecurityTransparentAttribute . B. und SecurityCriticalAttribute funktionieren nicht ordnungsgemäß, wenn sie hinzugefügt werden, nachdem eine dynamische Assembly erstellt wurde.

Diese Methode sollte nur verwendet werden, um eine dynamische Assembly in der aktuellen Anwendungsdomäne zu definieren. Weitere Informationen zu dieser Einschränkung finden Sie in der Load(AssemblyName) Methodenüberladung.

Diese Methodenüberladung wird in .NET Framework 3.5 eingeführt.

Weitere Informationen

Gilt für:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Definiert eine dynamische Assembly mit dem angegebenen Namen und dem Zugriffsmodus.

public:
 virtual System::Reflection::Emit::AssemblyBuilder ^ DefineDynamicAssembly(System::Reflection::AssemblyName ^ name, System::Reflection::Emit::AssemblyBuilderAccess access);
public System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly(System.Reflection.AssemblyName name, System.Reflection.Emit.AssemblyBuilderAccess access);
abstract member DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess -> System.Reflection.Emit.AssemblyBuilder
override this.DefineDynamicAssembly : System.Reflection.AssemblyName * System.Reflection.Emit.AssemblyBuilderAccess -> System.Reflection.Emit.AssemblyBuilder
Public Function DefineDynamicAssembly (name As AssemblyName, access As AssemblyBuilderAccess) As AssemblyBuilder

Parameter

name
AssemblyName

Die eindeutige Identität der dynamischen Assembly.

access
AssemblyBuilderAccess

Der Zugriffsmodus für die dynamische Assembly.

Gibt zurück

Eine dynamische Assembly mit dem angegebenen Namen und dem Zugriffsmodus.

Implementiert

Ausnahmen

name ist null.

Die Name Eigenschaft von name ist null.

-oder-

Die Name Eigenschaft von name beginnt mit Leerzeichen oder enthält einen Schrägstrich nach vorne oder rückwärts.

Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.

Beispiele

Im folgenden Beispiel wird die Methode und DefineDynamicAssembly das AssemblyResolve Ereignis veranschaulicht.

Damit dieses Codebeispiel ausgeführt werden kann, müssen Sie den vollqualifizierten Assemblynamen angeben. Informationen zum Abrufen des vollqualifizierten Assemblynamens finden Sie unter Assemblynamen.

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class Test
{
public:
   static void InstantiateMyDynamicType( AppDomain^ domain )
   {
      try
      {
         
         // You must supply a valid fully qualified assembly name here.
         domain->CreateInstance( "Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType" );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( e->Message );
      }

   }

   static Assembly^ MyResolveEventHandler( Object^ sender, ResolveEventArgs^ args )
   {
      return DefineDynamicAssembly( dynamic_cast<AppDomain^>(sender) );
   }

   static Assembly^ DefineDynamicAssembly( AppDomain^ domain )
   {
      
      // Build a dynamic assembly using Reflection Emit API.
      AssemblyName^ assemblyName = gcnew AssemblyName;
      assemblyName->Name = "MyDynamicAssembly";
      AssemblyBuilder^ assemblyBuilder = domain->DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess::Run );
      ModuleBuilder^ moduleBuilder = assemblyBuilder->DefineDynamicModule( "MyDynamicModule" );
      TypeBuilder^ typeBuilder = moduleBuilder->DefineType( "MyDynamicType", TypeAttributes::Public );
      ConstructorBuilder^ constructorBuilder = typeBuilder->DefineConstructor( MethodAttributes::Public, CallingConventions::Standard, nullptr );
      ILGenerator^ ilGenerator = constructorBuilder->GetILGenerator();
      ilGenerator->EmitWriteLine( "MyDynamicType instantiated!" );
      ilGenerator->Emit( OpCodes::Ret );
      typeBuilder->CreateType();
      return assemblyBuilder;
   }

};

int main()
{
   AppDomain^ currentDomain = AppDomain::CurrentDomain;
   Test::InstantiateMyDynamicType( currentDomain ); // Failed!
   currentDomain->AssemblyResolve += gcnew ResolveEventHandler( Test::MyResolveEventHandler );
   Test::InstantiateMyDynamicType( currentDomain ); // OK!
}
using System;
using System.Reflection;
using System.Reflection.Emit;

class DefinedDynamicAssemblySnippet {
   public static void Main() {
      AppDomain currentDomain = AppDomain.CurrentDomain;

      InstantiateMyDynamicType(currentDomain);   // Failed!

      currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);

      InstantiateMyDynamicType(currentDomain);   // OK!
   }

   static void InstantiateMyDynamicType(AppDomain domain) {
      try {
         // You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType");
      } catch (Exception e) {
         Console.WriteLine(e.Message);
      }
   }

   static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args) {
      return DefineDynamicAssembly((AppDomain) sender);
   }

   static Assembly DefineDynamicAssembly(AppDomain domain) {
      // Build a dynamic assembly using Reflection Emit API.

      AssemblyName assemblyName = new AssemblyName();
      assemblyName.Name = "MyDynamicAssembly";

      AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
      ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule");
      TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public);
      ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null);
      ILGenerator ilGenerator = constructorBuilder.GetILGenerator();

      ilGenerator.EmitWriteLine("MyDynamicType instantiated!");
      ilGenerator.Emit(OpCodes.Ret);

      typeBuilder.CreateType();

      return assemblyBuilder;
   }
}
open System
open System.Reflection
open System.Reflection.Emit

let instantiateMyDynamicType (domain: AppDomain) =
    try
        // You must supply a valid fully qualified assembly name here.
        domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
        |> ignore
    with e ->
        printfn $"{e.Message}"

let defineDynamicAssembly (domain: AppDomain) =
    // Build a dynamic assembly using Reflection Emit API.
    let assemblyName = AssemblyName()
    assemblyName.Name <- "MyDynamicAssembly"

    let assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
    let moduleBuilder = assemblyBuilder.DefineDynamicModule "MyDynamicModule"
    let typeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
    let constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, null)
    let ilGenerator = constructorBuilder.GetILGenerator()

    ilGenerator.EmitWriteLine "MyDynamicType instantiated!"
    ilGenerator.Emit OpCodes.Ret

    typeBuilder.CreateType() |> ignore

    assemblyBuilder

let myResolveEventHandler (sender: obj) _ =
    defineDynamicAssembly (sender :?> AppDomain)
    :> Assembly
   
let currentDomain = AppDomain.CurrentDomain

instantiateMyDynamicType currentDomain   // Failed!

currentDomain.add_AssemblyResolve(ResolveEventHandler myResolveEventHandler)

instantiateMyDynamicType currentDomain   // OK!

Imports System.Reflection
Imports System.Reflection.Emit

Module Test
   
   Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      
      InstantiateMyDynamicType(currentDomain)   'Failed!
      
      AddHandler currentDomain.AssemblyResolve, AddressOf MyResolveEventHandler
      
      InstantiateMyDynamicType(currentDomain)   'OK!
   End Sub
   
   Sub InstantiateMyDynamicType(domain As AppDomain)
      Try
         ' You must supply a valid fully qualified assembly name here.
         domain.CreateInstance("Assembly text name, Version, Culture, PublicKeyToken", "MyDynamicType")
      Catch e As Exception
         Console.WriteLine(e.Message)
      End Try
   End Sub
   
   Function MyResolveEventHandler(sender As Object, args As ResolveEventArgs) As System.Reflection.Assembly
      Return DefineDynamicAssembly(DirectCast(sender, AppDomain))
   End Function 'MyResolveEventHandler
   
   Function DefineDynamicAssembly(domain As AppDomain) As System.Reflection.Assembly
      ' Build a dynamic assembly using Reflection Emit API.

      Dim assemblyName As New AssemblyName()
      assemblyName.Name = "MyDynamicAssembly"
      
      Dim assemblyBuilder As AssemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run)
      Dim moduleBuilder As ModuleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule")
      Dim typeBuilder As TypeBuilder = moduleBuilder.DefineType("MyDynamicType", TypeAttributes.Public)
      Dim constructorBuilder As ConstructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Nothing)
      Dim ilGenerator As ILGenerator = constructorBuilder.GetILGenerator()
      
      ilGenerator.EmitWriteLine("MyDynamicType instantiated!")
      ilGenerator.Emit(OpCodes.Ret)
      
      typeBuilder.CreateType()
      
      Return assemblyBuilder
   End Function 'DefineDynamicAssembly

End Module 'Test

Hinweise

Diese Methode sollte nur verwendet werden, um eine dynamische Assembly in der aktuellen Anwendungsdomäne zu definieren. Weitere Informationen finden Sie in der Load(AssemblyName) Methodenüberladung.

Note

Während der Entwicklung von Code, der dynamische Assemblys ausgibt, empfiehlt es sich, eine Überladung der DefineDynamicAssembly Methode zu verwenden, die Nachweise und Berechtigungen angibt, den Nachweis anzugeben, über den die dynamische Assembly verfügen soll, und in diese einzuschließen SecurityPermissionFlag.SkipVerificationrefusedPermissions. Durch Das Einschließen SkipVerification des refusedPermissions Parameters wird sichergestellt, dass die MSIL überprüft wird. Eine Einschränkung dieser Technik besteht darin, dass sie auch SecurityException ausgelöst wird, wenn sie mit Code verwendet wird, der volle Vertrauenswürdigkeit erfordert.

Gilt für: