ModuleBuilder.DefineResource 메서드

정의

이 모듈에 저장할 관리되는 임베디드 리소스를 정의합니다.

오버로드

Name Description
DefineResource(String, String)

이 모듈에 저장할 명명된 관리되는 임베디드 리소스를 정의합니다.

DefineResource(String, String, ResourceAttributes)

이 모듈에 저장할 지정된 특성을 사용하여 명명된 관리되는 임베디드 리소스를 정의합니다.

DefineResource(String, String)

이 모듈에 저장할 명명된 관리되는 임베디드 리소스를 정의합니다.

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

매개 변수

name
String

리소스의 이름입니다. name 은 포함된 null을 포함할 수 없습니다.

description
String

리소스에 대한 설명입니다.

반품

정의된 리소스에 대한 리소스 작성기입니다.

예외

name 길이는 0입니다.

name가 null입니다.

이 모듈은 일시적입니다.

-또는-

포함하는 어셈블리를 지속할 수 없습니다.

예제

다음 예제에서는 현재ModuleBuilder에 외부 리소스를 추가하는 방법을 보여 DefineResource 줍니다.

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

설명

이러한 메서드는 동적 어셈블리를 디스크에 ResourceWriter.Generate()ModuleBuilder.Save 쓸 때 호출되므로 호출자가 메서드와 ResourceWriter.Close() 메서드를 호출해서는 안됩니다.

관리되는 리소스를 포함하려면 이 메서드를 사용합니다. 매니페스트 리소스 Blob을 포함하려면 이 메서드를 DefineManifestResource 사용합니다. 관리되는 리소스 및 매니페스트 리소스 Blob을 포함하고 연결하는 방법에 대한 요약은 메서드를 DefineManifestResource 참조하세요.

추가 정보

적용 대상

DefineResource(String, String, ResourceAttributes)

이 모듈에 저장할 지정된 특성을 사용하여 명명된 관리되는 임베디드 리소스를 정의합니다.

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

매개 변수

name
String

리소스의 이름입니다. name 은 포함된 null을 포함할 수 없습니다.

description
String

리소스에 대한 설명입니다.

attribute
ResourceAttributes

리소스 특성입니다.

반품

정의된 리소스에 대한 리소스 작성기입니다.

예외

name 길이는 0입니다.

name가 null입니다.

이 모듈은 일시적입니다.

-또는-

포함하는 어셈블리를 지속할 수 없습니다.

예제

다음 예제에서는 DefineResource를 사용하여 현재 ModuleBuilder에 외부 리소스를 추가하는 방법을 보여 줍니다.

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

설명

이러한 메서드는 동적 어셈블리를 디스크에 ResourceWriter.Generate()ModuleBuilder.Save 쓸 때 호출되므로 호출자가 메서드와 ResourceWriter.Close() 메서드를 호출해서는 안됩니다.

관리되는 리소스를 포함하려면 이 메서드를 사용합니다. 매니페스트 리소스 Blob을 포함하려면 이 메서드를 DefineManifestResource 사용합니다. 관리되는 리소스 및 매니페스트 리소스 Blob을 포함하고 연결하는 방법에 대한 요약은 메서드를 DefineManifestResource 참조하세요.

추가 정보

적용 대상