AssemblyBuilder.DefineResource Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert eine eigenständige verwaltete Ressource für diese Assembly.
Überlädt
DefineResource(String, String, String) |
Definiert eine eigenständige verwaltete Ressource mit dem Standardattribut für öffentliche Ressourcen für diese Assembly. |
DefineResource(String, String, String, ResourceAttributes) |
Definiert eine eigenständige verwaltete Ressource für diese Assembly. Für die verwaltete Ressource können Attribute angegeben werden. |
DefineResource(String, String, String)
Definiert eine eigenständige verwaltete Ressource mit dem Standardattribut für öffentliche Ressourcen für diese Assembly.
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
Parameter
- name
- String
Der logische Name der Ressource.
- description
- String
Eine Textbeschreibung der Ressource.
- fileName
- String
Der Name der physischen Datei (RESOURCES-Datei), der der logische Name zugeordnet ist. Dieser darf keinen Pfad enthalten.
Gibt zurück
Ein ResourceWriter-Objekt für die angegebene Ressource.
Ausnahmen
name
wurde bereits zuvor definiert.
- oder -
In der Assembly ist eine andere Datei mit dem Namen fileName
vorhanden.
- oder -
Die Länge von name
ist 0 (null).
- oder -
Die Länge von fileName
ist 0 (null).
- oder -
fileName
enthält einen Pfad.
name
oder fileName
ist null
.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Beispiele
Im folgenden Beispiel wird die DefineResource -Methode verwendet, um einen Ressourcenwriter abzurufen. Im Beispiel wird der Ressourcenwriter verwendet, um drei Ressourcenzeichenfolgen hinzuzufügen.
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
Hinweise
Feinkörnungsressourcen können mit dem hinzugefügt werden, das durch Aufrufen AddResourcevon zurückgegeben wirdResourceWriter.
fileName
sollte nicht mit dem eines anderen persistenten Moduls, einer eigenständigen verwalteten Ressource oder einer eigenständigen Manifestdatei identisch sein.
Die Laufzeit ruft die Close -Methode auf, wenn die dynamische Assembly gespeichert wird.
Hinweis
Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
DefineResource(String, String, String, ResourceAttributes)
Definiert eine eigenständige verwaltete Ressource für diese Assembly. Für die verwaltete Ressource können Attribute angegeben werden.
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
Parameter
- name
- String
Der logische Name der Ressource.
- description
- String
Eine Textbeschreibung der Ressource.
- fileName
- String
Der Name der physischen Datei (RESOURCES-Datei), der der logische Name zugeordnet ist. Dieser darf keinen Pfad enthalten.
- attribute
- ResourceAttributes
Die Ressourcenattribute.
Gibt zurück
Ein ResourceWriter-Objekt für die angegebene Ressource.
Ausnahmen
name
wurde zuvor definiert, oder wenn es eine andere Datei in der Assembly mit dem Namen fileName
gibt.
- oder -
Die Länge von name
ist 0 (null).
- oder -
Die Länge von fileName
ist 0 (null).
- oder -
fileName
enthält einen Pfad.
name
oder fileName
ist null
.
Der Aufrufer verfügt nicht über die erforderliche Berechtigung.
Hinweise
Differenzierte Ressourcen können mit dem hinzugefügt werden, das durch Aufrufen AddResourcevon zurückgegeben wirdResourceWriter.
fileName
sollte nicht mit dem eines anderen persistenten Moduls, einer eigenständigen verwalteten Ressource oder einer eigenständigen Manifestdatei identisch sein.
Die Laufzeit ruft die Close -Methode auf, wenn die dynamische Assembly gespeichert wird.
Hinweis
Ab dem .NET Framework 2.0 Service Pack 1 benötigt ReflectionPermission dieses Mitglied nicht mehr das ReflectionPermissionFlag.ReflectionEmit Flag. (Siehe Sicherheitsprobleme in Reflektionsausgabe.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf die .NET Framework 3.5 oder höher ausgerichtet sein.