Nyelv

AppDomain.DefineDynamicAssembly Metódus

Definíció

Dinamikus szerelvényt határoz meg az aktuális alkalmazástartományban.

Túlterhelések

Név Description
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Elavult.

Dinamikus szerelvényt definiál a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal, engedélykérésekkel, szinkronizálási beállítással és egyéni attribútumokkal.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal, engedélykérésekkel és szinkronizálási lehetőséggel.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal és engedélykérésekkel.

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

Dinamikus szerelvényt határoz meg a megadott név, hozzáférési mód, tárkönyvtár és engedélykérések használatával.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, bizonyítékokkal és engedélykérelmekkel.

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

Dinamikus szerelvényt határoz meg a megadott név, hozzáférési mód, tárkönyvtár és szinkronizálási beállítás használatával.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és engedélykérelmekkel.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral és bizonyítékokkal.

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és egyéni attribútumokkal, és a megadott forrást használja a biztonsági környezethez.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és tárkönyvtárral.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Elavult.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és bizonyítékokkal.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Dinamikus szerelvényt definiál a megadott névvel, hozzáférési móddal és egyéni attribútumokkal.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Dinamikus szerelvényt határoz meg a megadott névvel és hozzáférési móddal.

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

Figyelemfelhívás

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.

Dinamikus szerelvényt definiál a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal, engedélykérésekkel, szinkronizálási beállítással és egyéni attribútumokkal.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a dinamikus szerelvény mentésre kerül. Ha dir igen null, akkor a rendszer az aktuális könyvtárat használja.

evidence
Evidence

A dinamikus szerelvényhez rendelkezésre bocsátott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

isSynchronized
Boolean

truea modulok, típusok és tagok létrehozásának szinkronizálása a dinamikus szerelvényben; egyéb esetben. false

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

A szerelvényre alkalmazandó attribútumok felsorolása, vagy null ha nincsenek attribútumok.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság üres name szóközzel kezdődik, vagy előre- vagy hátrafelé fordított perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Megjegyzések

Ezzel a metódussal olyan attribútumokat adhat meg, amelyek nem működnek megfelelően, kivéve, ha dinamikus szerelvény létrehozásakor alkalmazzák őket. Például az olyan biztonsági attribútumok, mint például SecurityTransparentAttributeSecurityCriticalAttribute a dinamikus szerelvény létrehozása után hozzáadott biztonsági attribútumok, és nem működnek megfelelően.

A , és paraméterek engedélykérelmeit requiredPermissionscsak akkor használja a rendszer, ha a optionalPermissions paraméter is meg van adva, vagy ha a dinamikus szerelvényt menti és újra betölti a memóriába.refusedPermissionsevidence

Note

Ha dinamikus szerelvényeket kibocsátó kódot fejleszt, javasoljuk, hogy a jelölőt vegye fel SecurityPermissionFlag.SkipVerification a refusedPermissions paraméterbe. A jelző felvétele biztosítja a Microsoft köztes nyelv (MSIL) ellenőrzését. Ez a technika észleli az ellenőrizhetetlen kód véletlen generálását, amelyet egyébként nagyon nehéz észlelni. Ennek a technikának az a korlátozása, hogy a teljes bizalmat igénylő kód használatakor is SecurityException előfordulhat.

Dinamikus hívók meghatározásakor Assemblycsak teljes mértékben megbízható hívók szolgáltathatnak bizonyítékot. A futtatókörnyezet leképozza a Evidence biztonsági szabályzatot a megadott engedélyek meghatározásához. A részben megbízható hívóknak meg kell adniuk null a paramétert evidence . Ha evidence igen null, a futtatókörnyezet átmásolja az engedélykészleteket (azaz az aktuális engedélyezési és megtagadási készleteket) a hívó szerelvényéből a definiált dinamikus szerelvénybe, és feloldottként jelöli meg a szabályzatot.

Ha a dinamikus szerelvényt lemezre menti a rendszer, a későbbi terhelések a dinamikus szerelvény mentési helyéhez társított házirendek alapján kapnak támogatást.

Ha isSynchronized igentrue, a rendszer a következő AssemblyBuilder metódusokat szinkronizálja: DefineDynamicModule, DefineResource, , AddResourceFileGetDynamicModule, SetEntryPointés Save. Ha ezek közül két metódus különböző szálakon van meghívva, az egyik blokkolni fogja, amíg a másik befejeződik.

Ez a módszer túlterhelést vezet be a .NET Framework 3.5-ben.

Lásd még

A következőre érvényes:

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

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal, engedélykérésekkel és szinkronizálási lehetőséggel.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a dinamikus szerelvény mentésre kerül. Ha dir igen null, a könyvtár alapértelmezés szerint az aktuális könyvtárra kerül.

evidence
Evidence

A dinamikus szerelvényhez megadott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

isSynchronized
Boolean

truea modulok, típusok és tagok létrehozásának szinkronizálása a dinamikus szerelvényben; egyéb esetben. false

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

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

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral, bizonyítékokkal és engedélykérésekkel.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a szerelvény mentésre kerül. Ha dir igen null, a könyvtár alapértelmezés szerint az aktuális könyvtárra kerül.

evidence
Evidence

A dinamikus szerelvényhez megadott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

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

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott név, hozzáférési mód, tárkönyvtár és engedélykérések használatával.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a szerelvény mentésre kerül. Ha dir igen null, a könyvtár alapértelmezés szerint az aktuális könyvtárra kerül.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

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

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, bizonyítékokkal és engedélykérelmekkel.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

evidence
Evidence

A dinamikus szerelvényhez megadott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

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

Dinamikus szerelvényt határoz meg a megadott név, hozzáférési mód, tárkönyvtár és szinkronizálási beállítás használatával.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a dinamikus szerelvény mentésre kerül. Ha dir igen null, akkor a rendszer az aktuális könyvtárat használja.

isSynchronized
Boolean

truea modulok, típusok és tagok létrehozásának szinkronizálása a dinamikus szerelvényben; egyéb esetben. false

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

A szerelvényre alkalmazandó attribútumok felsorolása, vagy null ha nincsenek attribútumok.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság üres name szóközzel kezdődik, vagy előre- vagy hátrafelé fordított perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Megjegyzések

Ezzel a metódussal olyan attribútumokat adhat meg, amelyek nem működnek megfelelően, kivéve, ha dinamikus szerelvény létrehozásakor alkalmazzák őket. Például az olyan biztonsági attribútumok, mint például SecurityTransparentAttributeSecurityCriticalAttribute a dinamikus szerelvény létrehozása után hozzáadott biztonsági attribútumok, és nem működnek megfelelően.

Ha isSynchronized igentrue, a rendszer a következő AssemblyBuilder metódusokat szinkronizálja: DefineDynamicModule, DefineResource, , AddResourceFileGetDynamicModule, SetEntryPointés Save. Ha ezek közül két metódus különböző szálakon van meghívva, az egyik blokkolni fogja, amíg a másik befejeződik.

Lásd még

A következőre érvényes:

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

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és engedélykérelmekkel.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

requiredPermissions
PermissionSet

A szükséges engedélykérés.

optionalPermissions
PermissionSet

Az opcionális engedélykérés.

refusedPermissions
PermissionSet

Az elutasított engedélykérés.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal, tárkönyvtárral és bizonyítékokkal.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a szerelvény mentésre kerül. Ha dir igen null, a könyvtár alapértelmezés szerint az aktuális könyvtárra kerül.

evidence
Evidence

A dinamikus szerelvényhez megadott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

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

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és egyéni attribútumokkal, és a megadott forrást használja a biztonsági környezethez.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény hozzáférési módja.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

A szerelvényre alkalmazandó attribútumok felsorolása, vagy null ha nincsenek attribútumok.

securityContextSource
SecurityContextSource

A biztonsági környezet forrása.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság üres name szóközzel kezdődik, vagy előre- vagy hátrafelé fordított perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Az érték securityContextSource nem volt az enumerálási értékek egyike.

Megjegyzések

Ezzel a metódussal olyan attribútumokat adhat meg, amelyek nem működnek megfelelően, kivéve, ha dinamikus szerelvény létrehozásakor alkalmazzák őket. Például az olyan biztonsági attribútumok, mint például SecurityTransparentAttributeSecurityCriticalAttribute a dinamikus szerelvény létrehozása után hozzáadott biztonsági attribútumok, és nem működnek megfelelően.

Ez a módszer csak az aktuális alkalmazástartomány dinamikus szerelvényének meghatározására használható. A korlátozással kapcsolatos további információkért lásd a metódus túlterhelését Load(AssemblyName) .

A következőre érvényes:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és tárkönyvtárral.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

dir
String

Annak a könyvtárnak a neve, amelyben a szerelvény mentésre kerül. Ha dir igen null, a könyvtár alapértelmezés szerint az aktuális könyvtárra kerül.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Példák

Az alábbi minta a metódust és DefineDynamicAssembly az eseményt AssemblyResolve mutatja be.

A példakód futtatásához meg kell adnia a teljes szerelvénynevet. A teljes szerelvénynév beszerzéséről további információt a szerelvénynevek című témakörben talál.

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

Megjegyzések

Ez a módszer csak az aktuális alkalmazástartomány dinamikus szerelvényének meghatározására használható. További információkért lásd a metódus túlterhelését Load(AssemblyName) .

Note

A dinamikus szerelvényeket kibocsátó kód fejlesztése során ajánlott a bizonyítékokat és engedélyeket meghatározó metódus túlterhelését DefineDynamicAssembly használni, megadni a dinamikus szerelvényhez szükséges bizonyítékokat, és belefoglalni SecurityPermissionFlag.SkipVerificationrefusedPermissions. A paraméter beleszámítva SkipVerificationrefusedPermissions biztosítja az MSIL ellenőrzését. Ennek a technikának a korlátozása az, hogy a teljes bizalmat igénylő kód használatakor is SecurityException előfordulhat.

A következőre érvényes:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)

Figyelemfelhívás

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.

Dinamikus szerelvényt határoz meg a megadott névvel, hozzáférési móddal és bizonyítékokkal.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény elérésének módja.

evidence
Evidence

A dinamikus szerelvényhez megadott bizonyítékok. A bizonyítékokat változatlanul használják a politikai megoldás végső bizonyítékaként.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Megvalósítás

Attribútumok

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

A következőre érvényes:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Dinamikus szerelvényt definiál a megadott névvel, hozzáférési móddal és egyéni attribútumokkal.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény hozzáférési módja.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

A szerelvényre alkalmazandó attribútumok felsorolása, vagy null ha nincsenek attribútumok.

Válaszok

Dinamikus szerelvény a megadott névvel és funkciókkal.

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság üres name szóközzel kezdődik, vagy előre- vagy hátrafelé fordított perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Példák

Az alábbi kódminta bemutatja, hogyan hozhat létre dinamikus szerelvényt, amely rendelkezik a SecurityTransparentAttributekövetkezővel: . Az attribútumot objektumtömb CustomAttributeBuilder elemeként kell megadni.

A létrehozás első lépése az CustomAttributeBuilder attribútum konstruktorának beszerzése. A konstruktornak nincsenek paraméterei, ezért a GetConstructor metódust üres objektumtömbdel Type hívjuk meg, amely a paraméterek típusait jelöli. A második lépés az eredményként kapott ConstructorInfo objektum átadása az osztály konstruktorának CustomAttributeBuilder , valamint egy üres típusú Object tömb, amely az argumentumokat jelöli.

Ezt követően CustomAttributeBuilder a rendszer a DefineDynamicAssembly tömb egyetlen elemeként továbbítja a metódusnak.

A példakód egy modult és egy típust határoz meg az új dinamikus szerelvényben, majd megjeleníti az szerelvény attribútumait.

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

Megjegyzések

Ezzel a metódussal olyan attribútumokat adhat meg, amelyek nem működnek megfelelően, kivéve, ha dinamikus szerelvény létrehozásakor alkalmazzák őket. Például az olyan biztonsági attribútumok, mint például SecurityTransparentAttributeSecurityCriticalAttribute a dinamikus szerelvény létrehozása után hozzáadott biztonsági attribútumok, és nem működnek megfelelően.

Ez a módszer csak az aktuális alkalmazástartomány dinamikus szerelvényének meghatározására használható. A korlátozással kapcsolatos további információkért lásd a metódus túlterhelését Load(AssemblyName) .

Ez a módszer túlterhelést vezet be a .NET Framework 3.5-ben.

Lásd még

A következőre érvényes:

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Dinamikus szerelvényt határoz meg a megadott névvel és hozzáférési móddal.

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

Paraméterek

name
AssemblyName

A dinamikus szerelvény egyedi identitása.

access
AssemblyBuilderAccess

A dinamikus szerelvény hozzáférési módja.

Válaszok

Dinamikus szerelvény a megadott névvel és hozzáférési móddal.

Megvalósítás

Kivételek

name az null.

A Name tulajdonsága name : null.

-vagy-

A Name tulajdonság fehér name szóközzel kezdődik, vagy előre- vagy hátrafelé perjelet tartalmaz.

A művelet egy kiürített alkalmazástartományon van megkísérlve.

Példák

Az alábbi minta a metódust és DefineDynamicAssembly az eseményt AssemblyResolve mutatja be.

A példakód futtatásához meg kell adnia a teljes szerelvénynevet. A teljes szerelvénynév beszerzéséről további információt a szerelvénynevek című témakörben talál.

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

Megjegyzések

Ez a módszer csak az aktuális alkalmazástartomány dinamikus szerelvényének meghatározására használható. További információkért lásd a metódus túlterhelését Load(AssemblyName) .

Note

A dinamikus szerelvényeket kibocsátó kód fejlesztése során ajánlott a bizonyítékokat és engedélyeket meghatározó metódus túlterhelését DefineDynamicAssembly használni, megadni a dinamikus szerelvényhez szükséges bizonyítékokat, és belefoglalni SecurityPermissionFlag.SkipVerificationrefusedPermissions. A paraméter beleszámítva SkipVerificationrefusedPermissions biztosítja az MSIL ellenőrzését. Ennek a technikának a korlátozása az, hogy a teljes bizalmat igénylő kód használatakor is SecurityException előfordulhat.

A következőre érvényes: