AssemblyBuilder.DefineResource Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
public:
System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::String ^ fileName);
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName);
member this.DefineResource : string * string * string -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, fileName As String) As IResourceWriter
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.
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;
/*
The following program demonstrates the 'DefineResource' and 'DefineVersionInfoResource'
methods of 'AssemblyBuilder' class. It builds an assembly and a resource file at runtime.
The unmanaged version information like product, product version, Company, Copyright,
trademark are defined with 'DefineVersionInfoResource' method.
*/
static Type^ CreateAssembly( AppDomain^ appDomain );
int main()
{
AssemblyBuilder^ myAssembly;
IResourceWriter^ myResourceWriter;
myAssembly = safe_cast<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.
static Type^ CreateAssembly( AppDomain^ appDomain )
{
AssemblyName^ myAssemblyName = gcnew 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, String::typeid, nullptr );
// 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());
}
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());
}
Public Shared Sub Main()
Dim myAssembly As AssemblyBuilder
Dim myResourceWriter As IResourceWriter
myAssembly = CType(CreateAssembly(Thread.GetDomain()).Assembly, AssemblyBuilder)
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")
End Sub
' Create the callee transient dynamic assembly.
Private Shared Function CreateAssembly(myAppDomain As AppDomain) As Type
Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = "MyEmitAssembly"
Dim myAssembly As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAssemblyName, _
AssemblyBuilderAccess.Save)
Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule("EmittedModule", _
"EmittedModule.mod")
' Define a public class named "HelloWorld" in the assembly.
Dim helloWorldClass As TypeBuilder = myModule.DefineType("HelloWorld", TypeAttributes.Public)
' Define the Display method.
Dim myMethod As MethodBuilder = helloWorldClass.DefineMethod("Display", _
MethodAttributes.Public, GetType(String), Nothing)
' Generate IL for GetGreeting.
Dim methodIL As ILGenerator = myMethod.GetILGenerator()
methodIL.Emit(OpCodes.Ldstr, "Display method get called.")
methodIL.Emit(OpCodes.Ret)
' Returns the type HelloWorld.
Return helloWorldClass.CreateType()
End Function 'CreateAssembly
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
DefineResource(String, String, String, ResourceAttributes)
Define un recurso administrado independiente para este ensamblado. Los atributos se pueden especificar para el recurso administrado.
public:
System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::String ^ fileName, System::Reflection::ResourceAttributes attribute);
public System.Resources.IResourceWriter DefineResource (string name, string description, string fileName, System.Reflection.ResourceAttributes attribute);
member this.DefineResource : string * string * string * System.Reflection.ResourceAttributes -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, fileName As String, attribute As ResourceAttributes) As IResourceWriter
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.