AssemblyBuilder.DefineResource Método

Definición

Define un recurso administrado independiente para este ensamblado.

Sobrecargas

DefineResource(String, String, String)

Define un recurso administrado independiente para este ensamblado con el atributo de recurso público predeterminado.

DefineResource(String, String, String, ResourceAttributes)

Define un recurso administrado independiente para este ensamblado. Los atributos se pueden especificar para el recurso administrado.

DefineResource(String, String, String)

Define un recurso administrado independiente para este ensamblado con el atributo de recurso público predeterminado.

C#
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName);

Parámetros

name
String

Nombre lógico del recurso.

description
String

Descripción textual del recurso.

fileName
String

Nombre del archivo físico (archivo .resources) al que está asignado el nombre lógico. Esto no debe incluir una ruta de acceso.

Devoluciones

Un objeto ResourceWriter para el recurso especificado.

Excepciones

name se ha definido anteriormente.

o bien

Hay otro archivo en el ensamblado denominado fileName.

o bien

La longitud de name es cero.

o bien

La longitud de fileName es cero.

o bien

fileName incluye una ruta de acceso.

name o fileName es null.

El llamador no dispone del permiso requerido.

Ejemplos

En el ejemplo siguiente se usa el DefineResource método para obtener un escritor de recursos. En el ejemplo se usa el escritor de recursos para agregar tres cadenas de recursos.

C#
public static void Main()
{
   AssemblyBuilder myAssembly;
   IResourceWriter myResourceWriter;
   myAssembly = (AssemblyBuilder)CreateAssembly(Thread.GetDomain()).Assembly;

   myResourceWriter = myAssembly.DefineResource("myResourceFile",
      "A sample Resource File", "MyEmitAssembly.MyResource.resources");
   myResourceWriter.AddResource("AddResource 1", "First added resource");
   myResourceWriter.AddResource("AddResource 2", "Second added resource");
   myResourceWriter.AddResource("AddResource 3", "Third added resource");

   myAssembly.DefineVersionInfoResource("AssemblySample", "2:0:0:1",
      "Microsoft Corporation", "@Copyright Microsoft Corp. 1990-2001",
      ".NET is a trademark of Microsoft Corporation");
   myAssembly.Save("MyEmitAssembly.dll");
}

// Create the callee transient dynamic assembly.
private static Type CreateAssembly(AppDomain appDomain)
{
   AssemblyName myAssemblyName = new AssemblyName();
   myAssemblyName.Name = "MyEmitAssembly";
   AssemblyBuilder myAssembly = appDomain.DefineDynamicAssembly(myAssemblyName,
      AssemblyBuilderAccess.Save);
   ModuleBuilder myModule = myAssembly.DefineDynamicModule("EmittedModule",
      "EmittedModule.mod");

   // Define a public class named "HelloWorld" in the assembly.
   TypeBuilder helloWorldClass =
      myModule.DefineType("HelloWorld", TypeAttributes.Public);
   // Define the Display method.
   MethodBuilder myMethod = helloWorldClass.DefineMethod("Display",
      MethodAttributes.Public, typeof(String), null);

   // Generate IL for GetGreeting.
   ILGenerator methodIL = myMethod.GetILGenerator();
   methodIL.Emit(OpCodes.Ldstr, "Display method get called.");
   methodIL.Emit(OpCodes.Ret);

   // Returns the type HelloWorld.
   return(helloWorldClass.CreateType());
}

Comentarios

Se pueden agregar recursos específicos con el devuelto ResourceWriter llamando a AddResource.

fileName no debe ser el mismo que el de cualquier otro módulo persistente, un recurso administrado independiente o el archivo de manifiesto independiente.

El tiempo de ejecución llama al Close método cuando se guarda el ensamblado dinámico.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en la emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

.NET Framework 4.8.1 otras versiones
Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

DefineResource(String, String, String, ResourceAttributes)

Define un recurso administrado independiente para este ensamblado. Los atributos se pueden especificar para el recurso administrado.

C#
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName, System.Reflection.ResourceAttributes attribute);

Parámetros

name
String

Nombre lógico del recurso.

description
String

Descripción textual del recurso.

fileName
String

Nombre del archivo físico (archivo .resources) al que está asignado el nombre lógico. Esto no debe incluir una ruta de acceso.

attribute
ResourceAttributes

Atributos de recursos.

Devoluciones

Un objeto ResourceWriter para el recurso especificado.

Excepciones

name se ha definido anteriormente o hay otro archivo en el ensamblado denominado fileName.

o bien

La longitud de name es cero.

o bien

La longitud de fileName es cero.

o bien

fileName incluye una ruta de acceso.

name o fileName es null.

El llamador no dispone del permiso requerido.

Comentarios

Los recursos específicos se pueden agregar con el devuelto ResourceWriter mediante una llamada a AddResource.

fileName no debe ser el mismo que el de cualquier otro módulo persistente, un recurso administrado independiente o el archivo de manifiesto independiente.

El tiempo de ejecución llama al Close método cuando se guarda el ensamblado dinámico.

Nota

A partir de .NET Framework 2.0 Service Pack 1, este miembro ya no requiere ReflectionPermission con la ReflectionPermissionFlag.ReflectionEmit marca . (Consulte Problemas de seguridad en la emisión de reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

.NET Framework 4.8.1 otras versiones
Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1