AssemblyBuilder.DefineUnmanagedResource Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje nespravovaný prostředek pro toto sestavení.
Přetížení
DefineUnmanagedResource(String) |
Definuje nespravovaný soubor prostředků pro toto sestavení s názvem souboru prostředků. |
DefineUnmanagedResource(Byte[]) |
Definuje nespravovaný prostředek pro toto sestavení jako neprůsažný objekt blob bajtů. |
DefineUnmanagedResource(String)
Definuje nespravovaný soubor prostředků pro toto sestavení s názvem souboru prostředků.
public:
void DefineUnmanagedResource(System::String ^ resourceFileName);
public void DefineUnmanagedResource (string resourceFileName);
member this.DefineUnmanagedResource : string -> unit
Public Sub DefineUnmanagedResource (resourceFileName As String)
Parametry
- resourceFileName
- String
Název souboru prostředků.
Výjimky
Dříve byl definován nespravovaný prostředek.
-nebo-
Soubor resourceFileName
není čitelný.
-nebo-
resourceFileName
je prázdný řetězec ("").
resourceFileName
je null
.
Volající nemá požadované oprávnění.
Příklady
Následující příklad ukazuje volání příkazu DefineUnmanagedResource
a předání externího souboru prostředků.
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" );
};
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
Poznámky
Sestavení může být přidruženo pouze k jednomu nespravovanému prostředku. To znamená, že volání DefineVersionInfoResource nebo DefineUnmanagedResource po jedné z metod byla volána dříve vyvolá System.ArgumentException. Několik nespravovaných prostředků je potřeba sloučit pomocí nástroje, jako je nástroj Microsoft ResMerge (není součástí modulu CLR (Common Language Runtime).
Poznámka
Počínaje .NET Framework 2.0 Service Pack 1, tento člen již nevyžaduje ReflectionPermission s příznakem ReflectionPermissionFlag.ReflectionEmit . (Viz Problémy se zabezpečením v reflexi Emit.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na rozhraní .NET Framework 3.5 nebo novější.
Platí pro
DefineUnmanagedResource(Byte[])
Definuje nespravovaný prostředek pro toto sestavení jako neprůsažný objekt blob bajtů.
public:
void DefineUnmanagedResource(cli::array <System::Byte> ^ resource);
public void DefineUnmanagedResource (byte[] resource);
member this.DefineUnmanagedResource : byte[] -> unit
Public Sub DefineUnmanagedResource (resource As Byte())
Parametry
- resource
- Byte[]
Neprůžný objekt blob bajtů představující nespravovaný prostředek.
Výjimky
Dříve byl definován nespravovaný prostředek.
resource
je null
.
Volající nemá požadované oprávnění.
Příklady
Následující ukázka kódu vytvoří a připojí pole bajtů představujících nespravovaný prostředek k dynamickému sestavení pomocí DefineUnmanagedResource
.
/*
The following program demonstrates the 'DefineResource' and 'DefineUnmanagedResource'
methods of 'AssemblyBuilder' class. It builds an assembly and a resource file at runtime.
An unmanaged resource file is also defined for the same resource file. The EmittedTest2.cpp file
calls the methods of "MyEmitAssembly.dll" assembly and the message is displayed to console.
*/
using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Resources;
static AssemblyBuilder^ CreateAssembly( String^ name )
{
AssemblyName^ aName = gcnew 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,
String::typeid, nullptr );
// 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);
};
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( gcnew array<Byte>{01, 00, 01} );
};
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
Poznámky
Sestavení může být přidruženo pouze k jednomu nespravovanému prostředku. To znamená, že volání DefineVersionInfoResource nebo DefineUnmanagedResource po jedné z metod byla volána dříve vyvolá System.ArgumentException je vyvolána. Několik nespravovaných prostředků je potřeba sloučit pomocí nástroje, jako je nástroj Microsoft ResMerge (není součástí modulu CLR (Common Language Runtime).