Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método AssemblyBuilder.DefineDynamicModule (String, String, Boolean)

 

Publicado: octubre de 2016

Define un módulo dinámico con persistencia, especificando el nombre del módulo, el nombre del archivo en el que se guardará el módulo y si se debe emitir información de símbolos mediante el escritor de símbolos predeterminado.

Espacio de nombres:   System.Reflection.Emit
Ensamblado:  mscorlib (en mscorlib.dll)

public ModuleBuilder DefineDynamicModule(
	string name,
	string fileName,
	bool emitSymbolInfo
)

Parámetros

name
Type: System.String

Nombre del módulo dinámico. Debe tener menos de 260 caracteres.

fileName
Type: System.String

Nombre del archivo en el que se debe guardar el módulo dinámico.

emitSymbolInfo
Type: System.Boolean

Si es true, la información de símbolos se escribe con el escritor de símbolos predeterminado.

Valor devuelto

Type: System.Reflection.Emit.ModuleBuilder

Objeto ModuleBuilder que representa el módulo dinámico definido.

Exception Condition
ArgumentNullException

El valor de name o fileName es null.

ArgumentException

La longitud de name o fileName es cero.

O bien

La longitud de name es mayor o igual que 260.

O bien

fileName contiene una especificación de ruta de acceso (por ejemplo, un componente de directorio).

O bien

Hay un conflicto con el nombre de otro archivo que pertenece a este ensamblado.

InvalidOperationException

Este ensamblado se ha guardado previamente.

NotSupportedException

Se llamó a este ensamblado en un ensamblado dinámico con el atributo Run.

ExecutionEngineException

No se puede cargar el ensamblado para el escritor de símbolos predeterminado.

O bien

No se encuentra el tipo que implementa la interfaz del escritor de símbolos predeterminado.

SecurityException

El llamador no dispone del permiso requerido.

To define a persistable dynamic module, this assembly needs to be created with the F:System.Reflection.Emit.AssemblyBuilderAccess.Save or the F:System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave attribute.

If you want the module to contain the assembly manifest, name should be the same as the name of the assembly (that is, the P:System.Reflection.AssemblyName.Name property of the T:System.Reflection.AssemblyName used to create the dynamic assembly) and fileName should be the same as the filename you specify when you save the assembly.

In an assembly with only one module, that module should contain the assembly manifest.

System_CAPS_noteNota

To suppress optimizations when debugging dynamic modules, apply the T:System.Diagnostics.DebuggableAttribute attribute to the dynamic assembly before calling Overload:System.Reflection.Emit.AssemblyBuilder.DefineDynamicModule. Create an instance of T:System.Diagnostics.DebuggableAttribute with the F:System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations flag and apply it using the Overload:System.Reflection.Emit.AssemblyBuilder.SetCustomAttribute method. The attribute must be applied to the dynamic assembly. It has no effect if applied to the module.

System_CAPS_noteNota

Starting with the net_v20sp1_long, this member no longer requires T:System.Security.Permissions.ReflectionPermission with the F:System.Security.Permissions.ReflectionPermissionFlag.ReflectionEmit flag. (See Security Issues in Reflection Emit.) To use this functionality, your application should target the net_v35_long or later.

[Visual Basic, C#]

The code example below demonstrates how to create a persistent dynamic module with symbol emission using DefineDynamicModule.

AppDomain myAppDomain = Thread.GetDomain(); 
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
			myAsmName,
			AssemblyBuilderAccess.Run);
// Create a dynamic module that can be saved as the specified DLL name. By
// specifying the third parameter as true, we can allow the emission of symbol info.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule4",
					    "MyModule4.dll",
					     true);

ReflectionPermission

when invoked late-bound through mechanisms such as M:System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]). Associated enumeration: F:System.Security.Permissions.ReflectionPermissionFlag.MemberAccess.

FileIOPermission

Write=true or Append=true is needed to save this module

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: