AppDomain.DefineDynamicAssembly Método

Definición

Define un ensamblado dinámico en el dominio de aplicación actual.

Sobrecargas

Nombre Description
DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)
Obsoletos.

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso, la opción de sincronización y los atributos personalizados especificados.

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

Define un ensamblado dinámico con el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso y la opción de sincronización.

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

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento, la evidencia y las solicitudes de permisos especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y las solicitudes de permisos especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso, la evidencia y las solicitudes de permisos especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y la opción de sincronización especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso y las solicitudes de permisos especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y la evidencia especificados.

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

Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados, y usa el origen especificado para su contexto de seguridad.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Define un ensamblado dinámico con el nombre, el modo de acceso y el directorio de almacenamiento especificados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)
Obsoletos.

Define un ensamblado dinámico con el nombre, el modo de acceso y la evidencia especificados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados.

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Define un ensamblado dinámico con el nombre y el modo de acceso especificados.

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

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso, la opción de sincronización y los atributos personalizados especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado dinámico. Si dir es null, se usa el directorio actual.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

isSynchronized
Boolean

true para sincronizar la creación de módulos, tipos y miembros en el ensamblado dinámico; de lo contrario, false.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Lista enumerable de atributos que se van a aplicar al ensamblado o null si no hay ningún atributo.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Comentarios

Use esta sobrecarga de método para especificar atributos que no funcionan correctamente a menos que se apliquen cuando se cree un ensamblado dinámico. Por ejemplo, los atributos de seguridad como SecurityTransparentAttribute y SecurityCriticalAttribute no funcionan correctamente si se agregan después de crear un ensamblado dinámico.

Las solicitudes de permiso especificadas para los requiredPermissionsparámetros , optionalPermissionsy refusedPermissions solo se usan si también se proporciona el evidence parámetro, o si el ensamblado dinámico se guarda y se vuelve a cargar en la memoria.

Note

Al desarrollar código que emite ensamblados dinámicos, se recomienda incluir la SecurityPermissionFlag.SkipVerification marca en el refusedPermissions parámetro . La inclusión de esta marca garantiza que se comprobará el Microsoft lenguaje intermedio (MSIL). Esta técnica detectará la generación involuntaria de código no verificable, lo que de lo contrario es muy difícil de detectar. Una limitación de esta técnica es que también hace SecurityException que se produzca cuando se usa con código que exige plena confianza.

Solo los autores de llamadas de plena confianza pueden proporcionar evidencia al definir un dinámico Assembly. El tiempo de ejecución asigna a Evidence través de la directiva de seguridad para determinar los permisos concedidos. Los autores de llamadas de confianza parcial deben proporcionar null para el evidence parámetro . Si evidence es null, el tiempo de ejecución copia los conjuntos de permisos (es decir, los conjuntos de concesión y denegación actuales) del ensamblado del autor de la llamada al ensamblado dinámico que se está definiendo y marca la directiva como resuelta.

Si el ensamblado dinámico se guarda en el disco, las cargas posteriores obtendrán concesiones basadas en directivas asociadas a la ubicación donde se guardó el ensamblado dinámico.

Si isSynchronized es true, los métodos siguientes del resultado AssemblyBuilder se sincronizarán: DefineDynamicModule, DefineResource, AddResourceFile, GetDynamicModule, y SetEntryPointSave. Si se llama a dos de estos métodos en subprocesos diferentes, uno se bloqueará hasta que se complete el otro.

Esta sobrecarga de método se introduce en .NET Framework 3.5.

Consulte también

Se aplica a

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

Precaución

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.

Define un ensamblado dinámico con el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso y la opción de sincronización.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado dinámico. Si dir es null, el directorio tiene como valor predeterminado el directorio actual.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

isSynchronized
Boolean

true para sincronizar la creación de módulos, tipos y miembros en el ensamblado dinámico; de lo contrario, false.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

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

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento, la evidencia y las solicitudes de permisos especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado. Si dir es null, el directorio tiene como valor predeterminado el directorio actual.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

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

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y las solicitudes de permisos especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado. Si dir es null, el directorio tiene como valor predeterminado el directorio actual.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

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

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso, la evidencia y las solicitudes de permisos especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

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

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y la opción de sincronización especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado dinámico. Si dir es null, se usa el directorio actual.

isSynchronized
Boolean

true para sincronizar la creación de módulos, tipos y miembros en el ensamblado dinámico; de lo contrario, false.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Lista enumerable de atributos que se van a aplicar al ensamblado o null si no hay ningún atributo.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Comentarios

Use esta sobrecarga de método para especificar atributos que no funcionan correctamente a menos que se apliquen cuando se cree un ensamblado dinámico. Por ejemplo, los atributos de seguridad como SecurityTransparentAttribute y SecurityCriticalAttribute no funcionan correctamente si se agregan después de crear un ensamblado dinámico.

Si isSynchronized es true, los métodos siguientes del resultado AssemblyBuilder se sincronizarán: DefineDynamicModule, DefineResource, AddResourceFile, GetDynamicModule, y SetEntryPointSave. Si se llama a dos de estos métodos en subprocesos diferentes, uno se bloqueará hasta que se complete el otro.

Consulte también

Se aplica a

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

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso y las solicitudes de permisos especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

requiredPermissions
PermissionSet

Solicitud de permisos necesarios.

optionalPermissions
PermissionSet

Solicitud de permisos opcionales.

refusedPermissions
PermissionSet

Solicitud de permisos rechazados.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence)

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso, el directorio de almacenamiento y la evidencia especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado. Si dir es null, el directorio tiene como valor predeterminado el directorio actual.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

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

Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados, y usa el origen especificado para su contexto de seguridad.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo de acceso para el ensamblado dinámico.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Lista enumerable de atributos que se van a aplicar al ensamblado o null si no hay ningún atributo.

securityContextSource
SecurityContextSource

Origen del contexto de seguridad.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

El valor de securityContextSource no era uno de los valores de enumeración.

Comentarios

Use esta sobrecarga de método para especificar atributos que no funcionan correctamente a menos que se apliquen cuando se cree un ensamblado dinámico. Por ejemplo, los atributos de seguridad como SecurityTransparentAttribute y SecurityCriticalAttribute no funcionan correctamente si se agregan después de crear un ensamblado dinámico.

Este método solo debe usarse para definir un ensamblado dinámico en el dominio de aplicación actual. Para obtener más información sobre esta restricción, consulte la sobrecarga del Load(AssemblyName) método.

Se aplica a

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)

Define un ensamblado dinámico con el nombre, el modo de acceso y el directorio de almacenamiento especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

dir
String

Nombre del directorio donde se guardará el ensamblado. Si dir es null, el directorio tiene como valor predeterminado el directorio actual.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Ejemplos

En el ejemplo siguiente se muestra el método y DefineDynamicAssembly el AssemblyResolve evento .

Para que se ejecute este ejemplo de código, debe proporcionar el nombre completo del ensamblado. Para obtener información sobre cómo obtener el nombre completo del ensamblado, vea Nombres de ensamblado.

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

Comentarios

Este método solo debe usarse para definir un ensamblado dinámico en el dominio de aplicación actual. Para obtener más información, consulte la sobrecarga del Load(AssemblyName) método.

Note

Durante el desarrollo de código que emite ensamblados dinámicos, se recomienda usar una sobrecarga del DefineDynamicAssembly método que especifica evidencia y permisos, proporcionar la evidencia que desea que tenga el ensamblado dinámico e incluir SecurityPermissionFlag.SkipVerification en refusedPermissions. La inclusión SkipVerification en el refusedPermissions parámetro garantiza que se compruebe el MSIL. Una limitación de esta técnica es que también se produce SecurityException cuando se usa con código que requiere plena confianza.

Se aplica a

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence)

Precaución

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.

Define un ensamblado dinámico con el nombre, el modo de acceso y la evidencia especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo en el que se tendrá acceso al ensamblado dinámico.

evidence
Evidence

Evidencia proporcionada para el ensamblado dinámico. La evidencia se usa sin modificar como conjunto final de pruebas usadas para la resolución de directivas.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Implementaciones

Atributos

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Se aplica a

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)

Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo de acceso para el ensamblado dinámico.

assemblyAttributes
IEnumerable<CustomAttributeBuilder>

Lista enumerable de atributos que se van a aplicar al ensamblado o null si no hay ningún atributo.

Devoluciones

Ensamblado dinámico con el nombre y las características especificados.

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear un ensamblado dinámico que tenga .SecurityTransparentAttribute El atributo debe especificarse como un elemento de una matriz de CustomAttributeBuilder objetos .

El primer paso para crear CustomAttributeBuilder es obtener un constructor para el atributo . El constructor no tiene parámetros, por lo que se llama al GetConstructor método con una matriz vacía de Type objetos para representar los tipos de los parámetros. El segundo paso consiste en pasar el objeto resultante ConstructorInfo al constructor de la CustomAttributeBuilder clase, junto con una matriz vacía de tipo Object para representar los argumentos.

A continuación, el resultado CustomAttributeBuilder se pasa al DefineDynamicAssembly método como el único elemento de una matriz.

El código de ejemplo define un módulo y un tipo en el nuevo ensamblado dinámico y, a continuación, muestra los atributos del ensamblado.

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

Comentarios

Use esta sobrecarga de método para especificar atributos que no funcionan correctamente a menos que se apliquen cuando se cree un ensamblado dinámico. Por ejemplo, los atributos de seguridad como SecurityTransparentAttribute y SecurityCriticalAttribute no funcionan correctamente si se agregan después de crear un ensamblado dinámico.

Este método solo debe usarse para definir un ensamblado dinámico en el dominio de aplicación actual. Para obtener más información sobre esta restricción, consulte la sobrecarga del Load(AssemblyName) método.

Esta sobrecarga de método se introduce en .NET Framework 3.5.

Consulte también

Se aplica a

DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)

Define un ensamblado dinámico con el nombre y el modo de acceso especificados.

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

Parámetros

name
AssemblyName

Identidad única del ensamblado dinámico.

access
AssemblyBuilderAccess

Modo de acceso para el ensamblado dinámico.

Devoluciones

Ensamblado dinámico con el nombre y el modo de acceso especificados.

Implementaciones

Excepciones

name es null.

La propiedad Name de name es null.

O bien

La Name propiedad de name comienza con espacios en blanco o contiene una barra diagonal o inversa.

La operación se intenta en un dominio de aplicación descargado.

Ejemplos

En el ejemplo siguiente se muestra el método y DefineDynamicAssembly el AssemblyResolve evento .

Para que se ejecute este ejemplo de código, debe proporcionar el nombre completo del ensamblado. Para obtener información sobre cómo obtener el nombre completo del ensamblado, vea Nombres de ensamblado.

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

Comentarios

Este método solo debe usarse para definir un ensamblado dinámico en el dominio de aplicación actual. Para obtener más información, consulte la sobrecarga del Load(AssemblyName) método.

Note

Durante el desarrollo de código que emite ensamblados dinámicos, se recomienda usar una sobrecarga del DefineDynamicAssembly método que especifica evidencia y permisos, proporcionar la evidencia que desea que tenga el ensamblado dinámico e incluir SecurityPermissionFlag.SkipVerification en refusedPermissions. La inclusión SkipVerification en el refusedPermissions parámetro garantiza que se compruebe el MSIL. Una limitación de esta técnica es que también se produce SecurityException cuando se usa con código que requiere plena confianza.

Se aplica a