ModuleBuilder.DefineResource Methode

Definition

Definiert eine verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll.

Überlädt

Name Beschreibung
DefineResource(String, String)

Definiert die benannte verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll.

DefineResource(String, String, ResourceAttributes)

Definiert die benannte verwaltete eingebettete Ressource mit den angegebenen Attributen, die in diesem Modul gespeichert werden sollen.

DefineResource(String, String)

Definiert die benannte verwaltete eingebettete Ressource, die in diesem Modul gespeichert werden soll.

public:
 System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description);
public System.Resources.IResourceWriter DefineResource(string name, string description);
member this.DefineResource : string * string -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String) As IResourceWriter

Parameter

name
String

Der Name der Ressource. name Eingebettete Nullwerte können nicht enthalten.

description
String

Die Beschreibung der Ressource.

Gibt zurück

Ein Ressourcenschreiber für die definierte Ressource.

Ausnahmen

Die Länge von name 0 ist null.

name ist NULL.

Dieses Modul ist vorübergehend.

-oder-

Die enthaltende Assembly kann nicht beibehalten werden.

Beispiele

Im folgenden Beispiel wird die Verwendung der DefineResource Verwendung einer externen Ressource zum aktuellen ModuleBuilderBeispiel veranschaulicht.

using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;

   public class CodeGenerator
   {
      public CodeGenerator()
      {
         // Get the current application domain for the current thread.
         AppDomain currentDomain = AppDomain.CurrentDomain;

         AssemblyName myAssemblyName = new AssemblyName();
         myAssemblyName.Name = "TempAssembly";

         // Define 'TempAssembly' assembly in the current application domain.
         AssemblyBuilder myAssemblyBuilder =
            currentDomain.DefineDynamicAssembly
                        (myAssemblyName, AssemblyBuilderAccess.RunAndSave);
         // Define 'TempModule' module in 'TempAssembly' assembly.
         ModuleBuilder myModuleBuilder =
            myAssemblyBuilder.DefineDynamicModule("TempModule",
                                       "TempModule.netmodule",true);
         // Define the managed embedded resource, 'MyResource' in 'TempModule'.
         IResourceWriter myResourceWriter =
               myModuleBuilder.DefineResource("MyResource.resource","Description");
         // Add resources to the resource writer.
         myResourceWriter.AddResource("String 1", "First String");
         myResourceWriter.AddResource("String 2", "Second String");
         myResourceWriter.AddResource("String 3", "Third String");
         myAssemblyBuilder.Save("MyAssembly.dll");
      }
   }

   public class CallerClass
   {
      public static void Main()
      {
         CodeGenerator myGenerator = new CodeGenerator();
         Console.WriteLine("A resource named 'MyResource.resource'"
                +" has been created and can be viewed  in the 'MyAssembly.dll'");
      }
   }
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources

Public Class CodeGenerator
   
   Public Sub New()
      ' Get the current application domain for the current thread.
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain

      Dim myAssemblyName As New AssemblyName()
      myAssemblyName.Name = "TempAssembly"
      
      ' Define 'TempAssembly' assembly in the current application domain.
      Dim myAssemblyBuilder As AssemblyBuilder = currentDomain.DefineDynamicAssembly _
                                       (myAssemblyName, AssemblyBuilderAccess.RunAndSave)
      ' Define 'TempModule' module in 'TempAssembly' assembly.
      Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule _
                                             ("TempModule", "TempModule.netmodule", True)
      ' Define the managed embedded resource, 'MyResource' in 'TempModule'.
      Dim myResourceWriter As IResourceWriter = myModuleBuilder.DefineResource _
                                                   ("MyResource.resource", "Description")
      ' Add resources to the resource writer.
      myResourceWriter.AddResource("String 1", "First String")
      myResourceWriter.AddResource("String 2", "Second String")
      myResourceWriter.AddResource("String 3", "Third String")
      myAssemblyBuilder.Save("MyAssembly.dll")

   End Sub
End Class

Public Class CallerClass
   
   Public Shared Sub Main()
      Dim myGenerator As New CodeGenerator()
      Console.WriteLine("A resource named 'MyResource.resource' has been created and can be" + _
                                                               " viewed  in the 'MyAssembly.dll'")
   End Sub
End Class

Hinweise

Der Aufrufer darf die ResourceWriter.Generate() Methoden ResourceWriter.Close() nicht aufrufen, da diese Methoden aufgerufen ModuleBuilder.Save werden, wenn die dynamische Assembly auf den Datenträger geschrieben wird.

Verwenden Sie diese Methode, um eine verwaltete Ressource einzubetten. Verwenden Sie die DefineManifestResource Methode, um ein Manifestressourcen-BLOB einzubetten. Eine Zusammenfassung der Einbettung und Verknüpfung von verwalteten Ressourcen und Manifestressourcenblobs finden Sie in der DefineManifestResource Methode.

Weitere Informationen

Gilt für:

DefineResource(String, String, ResourceAttributes)

Definiert die benannte verwaltete eingebettete Ressource mit den angegebenen Attributen, die in diesem Modul gespeichert werden sollen.

public:
 System::Resources::IResourceWriter ^ DefineResource(System::String ^ name, System::String ^ description, System::Reflection::ResourceAttributes attribute);
public System.Resources.IResourceWriter DefineResource(string name, string description, System.Reflection.ResourceAttributes attribute);
member this.DefineResource : string * string * System.Reflection.ResourceAttributes -> System.Resources.IResourceWriter
Public Function DefineResource (name As String, description As String, attribute As ResourceAttributes) As IResourceWriter

Parameter

name
String

Der Name der Ressource. name Eingebettete Nullwerte können nicht enthalten.

description
String

Die Beschreibung der Ressource.

attribute
ResourceAttributes

Die Ressourcenattribute.

Gibt zurück

Ein Ressourcenschreiber für die definierte Ressource.

Ausnahmen

Die Länge von name 0 ist null.

name ist NULL.

Dieses Modul ist vorübergehend.

-oder-

Die enthaltende Assembly kann nicht beibehalten werden.

Beispiele

Im folgenden Beispiel wird die Verwendung von DefineResource veranschaulicht, um der aktuellen ModuleBuilderRessource eine externe Ressource hinzuzufügen.

using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Resources;

   public class CodeGenerator
   {
      public CodeGenerator()
      {
         // Get the current application domain for the current thread.
         AppDomain currentDomain = AppDomain.CurrentDomain;

         AssemblyName myAssemblyName = new AssemblyName();
         myAssemblyName.Name = "TempAssembly";

         // Define 'TempAssembly' assembly in the current application domain.
         AssemblyBuilder myAssemblyBuilder =
            currentDomain.DefineDynamicAssembly
                        (myAssemblyName, AssemblyBuilderAccess.RunAndSave);
         // Define 'TempModule' module in 'TempAssembly' assembly.
         ModuleBuilder myModuleBuilder =
            myAssemblyBuilder.DefineDynamicModule("TempModule",
                                              "TempModule.netmodule",true);
         // Define the managed embedded resource, 'MyResource' in 'TempModule'
         // with the specified attribute.
         IResourceWriter writer =
               myModuleBuilder.DefineResource("MyResource.resource",
                            "Description",ResourceAttributes.Public);
         // Add resources to the resource writer.
         writer.AddResource("String 1", "First String");
         writer.AddResource("String 2", "Second String");
         writer.AddResource("String 3", "Third String");
         myAssemblyBuilder.Save("MyAssembly.dll");
      }
   }

   public class CallerClass
   {
      public static void Main()
      {
         CodeGenerator myGenerator = new CodeGenerator();
         Console.WriteLine("A resource named 'MyResource.resource'"
                +" has been created and can be viewed  in the 'MyAssembly.dll'");
      }
   }
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Resources

Public Class CodeGenerator
   
   Public Sub New()
      ' Get the current application domain for the current thread.
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain

      Dim myAssemblyName As New AssemblyName()
      myAssemblyName.Name = "TempAssembly"
      
      ' Define 'TempAssembly' assembly in the current application domain.
      Dim myAssemblyBuilder As AssemblyBuilder = currentDomain.DefineDynamicAssembly _
                                          (myAssemblyName, AssemblyBuilderAccess.RunAndSave)
      ' Define 'TempModule' module in 'TempAssembly' assembly.
      Dim myModuleBuilder As ModuleBuilder = myAssemblyBuilder.DefineDynamicModule _
                                                ("TempModule", "TempModule.netmodule", True)
      ' Define the managed embedded resource, 'MyResource' in 'TempModule'
      ' with the specified attribute.
      Dim writer As IResourceWriter = myModuleBuilder.DefineResource _
                              ("MyResource.resource", "Description", ResourceAttributes.Public)
      ' Add resources to the resource writer.
      writer.AddResource("String 1", "First String")
      writer.AddResource("String 2", "Second String")
      writer.AddResource("String 3", "Third String")
      myAssemblyBuilder.Save("MyAssembly.dll")

   End Sub
End Class

Public Class CallerClass
   
   Public Shared Sub Main()
      Dim myGenerator As New CodeGenerator()
      Console.WriteLine("A resource named 'MyResource.resource' has been created and can be " + _
                                                         "viewed  in the 'MyAssembly.dll'")
   End Sub
End Class

Hinweise

Der Aufrufer darf die ResourceWriter.Generate() Methoden ResourceWriter.Close() nicht aufrufen, da diese Methoden aufgerufen ModuleBuilder.Save werden, wenn die dynamische Assembly auf den Datenträger geschrieben wird.

Verwenden Sie diese Methode, um eine verwaltete Ressource einzubetten. Verwenden Sie die DefineManifestResource Methode, um ein Manifestressourcen-BLOB einzubetten. Eine Zusammenfassung der Einbettung und Verknüpfung von verwalteten Ressourcen und Manifestressourcenblobs finden Sie in der DefineManifestResource Methode.

Weitere Informationen

Gilt für: