AssemblyBuilder.DefineUnmanagedResource Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce una risorsa non gestita per questo assembly.
Overload
| Nome | Descrizione |
|---|---|
| DefineUnmanagedResource(Byte[]) |
Definisce una risorsa non gestita per questo assembly come BLOB opaco di byte. |
| DefineUnmanagedResource(String) |
Definisce un file di risorse non gestito per questo assembly in base al nome del file di risorse. |
DefineUnmanagedResource(Byte[])
Definisce una risorsa non gestita per questo assembly come BLOB opaco di byte.
public:
void DefineUnmanagedResource(cli::array <System::Byte> ^ resource);
public void DefineUnmanagedResource(byte[] resource);
member this.DefineUnmanagedResource : byte[] -> unit
Public Sub DefineUnmanagedResource (resource As Byte())
Parametri
- resource
- Byte[]
BLOB opaco di byte che rappresentano la risorsa non gestita.
Eccezioni
Una risorsa non gestita è stata definita in precedenza.
resource è null.
Il chiamante non dispone dell'autorizzazione richiesta.
Esempio
Nell'esempio di codice seguente viene creata e associata una matrice di byte che rappresenta una risorsa non gestita a un assembly dinamico usando DefineUnmanagedResource.
using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;
public class MyAssemblyResource
{
internal static void Main()
{
AssemblyBuilder myAssembly = CreateAssembly("MyEmitTestAssembly");
// Defines a standalone managed resource for this assembly.
IResourceWriter myResourceWriter = myAssembly.DefineResource("myResourceFile",
"A sample Resource File", "MyAssemblyResource.resources",
ResourceAttributes.Private);
myResourceWriter.AddResource("AddResource Test", "Testing for the added resource");
myAssembly.Save(myAssembly.GetName().Name + ".dll");
// Defines an unmanaged resource file for this assembly.
myAssembly.DefineUnmanagedResource(new byte[]{01, 00, 01});
}
private static AssemblyBuilder CreateAssembly(string name)
{
AssemblyName aName = new AssemblyName(name);
AssemblyBuilder myAssembly =
AppDomain.CurrentDomain.DefineDynamicAssembly(aName,
AssemblyBuilderAccess.Save);
// Define a dynamic module.
ModuleBuilder myModule =
myAssembly.DefineDynamicModule(aName.Name, aName.Name + ".dll");
// Define a public class named "EmitClass" in the assembly.
TypeBuilder myEmitClass = myModule.DefineType("EmitClass", TypeAttributes.Public);
// Define the Display method.
MethodBuilder myMethod = myEmitClass.DefineMethod("Display",
MethodAttributes.Public, typeof(String), null);
// Generate IL for Display method.
ILGenerator methodIL = myMethod.GetILGenerator();
methodIL.Emit(OpCodes.Ldstr, "Display method gets called.");
methodIL.Emit(OpCodes.Ret);
myEmitClass.CreateType();
return(myAssembly);
}
}
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources
Public Class MyAssemblyResource
Friend Shared Sub Main()
Dim myAssembly As AssemblyBuilder = _
CreateAssembly("MyEmitTestAssembly")
' Defines a standalone managed resource for this assembly.
Dim myResourceWriter As IResourceWriter = _
myAssembly.DefineResource("myResourceFile", _
"A sample Resource File", "MyAssemblyResource.resources", _
ResourceAttributes.Private)
myResourceWriter.AddResource("AddResource Test", "Testing for the added resource")
myAssembly.Save(myAssembly.GetName().Name & ".dll")
' Defines an unmanaged resource file for this assembly.
myAssembly.DefineUnmanagedResource(New Byte() {1, 0, 1})
End Sub
Private Shared Function CreateAssembly(ByVal name As String) As AssemblyBuilder
Dim aName As New AssemblyName(name)
Dim myAssembly As AssemblyBuilder = _
AppDomain.CurrentDomain.DefineDynamicAssembly(aName, _
AssemblyBuilderAccess.Save)
' Define a dynamic module.
Dim myModule As ModuleBuilder = _
myAssembly.DefineDynamicModule(aName.Name, aName.Name & ".dll")
' Define a public class named "EmitClass" in the assembly.
Dim myEmitClass As TypeBuilder = _
myModule.DefineType("EmitClass", TypeAttributes.Public)
' Define the Display method.
Dim myMethod As MethodBuilder = _
myEmitClass.DefineMethod("Display", MethodAttributes.Public, _
GetType(String), Nothing)
' Generate IL for Display method.
Dim methodIL As ILGenerator = myMethod.GetILGenerator()
methodIL.Emit(OpCodes.Ldstr, "Display method get called.")
methodIL.Emit(OpCodes.Ret)
myEmitClass.CreateType()
Return myAssembly
End Function
End Class
Commenti
Un assembly può essere associato a una sola risorsa non gestita. Ciò significa che la chiamata DefineVersionInfoResource o DefineUnmanagedResource dopo che uno dei metodi è stato chiamato in precedenza genererà l'eccezione System.ArgumentException generata. È necessario unire più risorse non gestite con uno strumento, ad esempio l'utilità Microsoft ResMerge (non fornita con Common Language Runtime).
Si applica a
DefineUnmanagedResource(String)
Definisce un file di risorse non gestito per questo assembly in base al nome del file di risorse.
public:
void DefineUnmanagedResource(System::String ^ resourceFileName);
public void DefineUnmanagedResource(string resourceFileName);
member this.DefineUnmanagedResource : string -> unit
Public Sub DefineUnmanagedResource (resourceFileName As String)
Parametri
- resourceFileName
- String
Nome del file di risorse.
Eccezioni
Una risorsa non gestita è stata definita in precedenza.
oppure
Il file resourceFileName non è leggibile.
oppure
resourceFileName è la stringa vuota ("").
resourceFileName è null.
Il chiamante non dispone dell'autorizzazione richiesta.
Esempio
L'esempio seguente illustra una chiamata a DefineUnmanagedResource, passando un file di risorse esterno.
internal static void Main()
{
AssemblyBuilder myAssembly = CreateAssembly("MyEmitTestAssembly");
// Defines a standalone managed resource for this assembly.
IResourceWriter myResourceWriter = myAssembly.DefineResource("myResourceFile",
"A sample Resource File", "MyAssemblyResource.resources",
ResourceAttributes.Private);
myResourceWriter.AddResource("AddResource Test", "Testing for the added resource");
myAssembly.Save(myAssembly.GetName().Name + ".dll");
// Defines an unmanaged resource file for this assembly.
myAssembly.DefineUnmanagedResource("MyAssemblyResource.resources");
}
private static AssemblyBuilder CreateAssembly(string name)
{
AssemblyName aName = new AssemblyName(name);
AssemblyBuilder myAssembly =
AppDomain.CurrentDomain.DefineDynamicAssembly(aName,
AssemblyBuilderAccess.Save);
// Define a dynamic module.
ModuleBuilder myModule =
myAssembly.DefineDynamicModule(aName.Name, aName.Name + ".dll");
// Define a public class named "EmitClass" in the assembly.
TypeBuilder myEmitClass = myModule.DefineType("EmitClass", TypeAttributes.Public);
// Define the Display method.
MethodBuilder myMethod = myEmitClass.DefineMethod("Display",
MethodAttributes.Public, typeof(String), null);
// Generate IL for Display method.
ILGenerator methodIL = myMethod.GetILGenerator();
methodIL.Emit(OpCodes.Ldstr, "Display method gets called.");
methodIL.Emit(OpCodes.Ret);
myEmitClass.CreateType();
return(myAssembly);
}
}
Friend Shared Sub Main()
Dim myAssembly As AssemblyBuilder = _
CreateAssembly("MyEmitTestAssembly")
' Defines a standalone managed resource for this assembly.
Dim myResourceWriter As IResourceWriter = _
myAssembly.DefineResource("myResourceFile", _
"A sample Resource File", "MyAssemblyResource.resources", _
ResourceAttributes.Private)
myResourceWriter.AddResource("AddResource Test", "Testing for the added resource")
myAssembly.Save(myAssembly.GetName().Name & ".dll")
' Defines an unmanaged resource file for this assembly.
myAssembly.DefineUnmanagedResource("MyAssemblyResource.resources")
End Sub
Private Shared Function CreateAssembly(ByVal name As String) As AssemblyBuilder
Dim aName As New AssemblyName(name)
Dim myAssembly As AssemblyBuilder = _
AppDomain.CurrentDomain.DefineDynamicAssembly(aName, _
AssemblyBuilderAccess.Save)
' Define a dynamic module.
Dim myModule As ModuleBuilder = _
myAssembly.DefineDynamicModule(aName.Name, aName.Name & ".dll")
' Define a public class named "EmitClass" in the assembly.
Dim myEmitClass As TypeBuilder = _
myModule.DefineType("EmitClass", TypeAttributes.Public)
' Define the Display method.
Dim myMethod As MethodBuilder = _
myEmitClass.DefineMethod("Display", MethodAttributes.Public, _
GetType(String), Nothing)
' Generate IL for Display method.
Dim methodIL As ILGenerator = myMethod.GetILGenerator()
methodIL.Emit(OpCodes.Ldstr, "Display method get called.")
methodIL.Emit(OpCodes.Ret)
myEmitClass.CreateType()
Return myAssembly
End Function
Commenti
Un assembly può essere associato a una sola risorsa non gestita. Ciò significa che la chiamata DefineVersionInfoResource o DefineUnmanagedResource dopo che uno dei metodi è stato chiamato in precedenza genererà l'eccezione System.ArgumentException. È necessario unire più risorse non gestite con uno strumento, ad esempio l'utilità Microsoft ResMerge (non fornita con Common Language Runtime).