AssemblyBuilder.DefineUnmanagedResource 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 어셈블리에 대한 관리되지 않는 리소스를 정의합니다.
오버로드
| Name | Description |
|---|---|
| DefineUnmanagedResource(String) |
리소스 파일의 이름이 지정된 경우 이 어셈블리에 대한 관리되지 않는 리소스 파일을 정의합니다. |
| DefineUnmanagedResource(Byte[]) |
이 어셈블리에 대한 관리되지 않는 리소스를 바이트의 불투명 Blob으로 정의합니다. |
DefineUnmanagedResource(String)
리소스 파일의 이름이 지정된 경우 이 어셈블리에 대한 관리되지 않는 리소스 파일을 정의합니다.
public:
void DefineUnmanagedResource(System::String ^ resourceFileName);
public void DefineUnmanagedResource(string resourceFileName);
member this.DefineUnmanagedResource : string -> unit
Public Sub DefineUnmanagedResource (resourceFileName As String)
매개 변수
- resourceFileName
- String
리소스 파일의 이름입니다.
예외
관리되지 않는 리소스가 이전에 정의되었습니다.
-또는-
파일을 resourceFileName 읽을 수 없습니다.
-또는-
resourceFileName 는 빈 문자열("")입니다.
resourceFileName은 null입니다.
호출자에게 필요한 권한이 없습니다.
예제
아래 예제에서는 외부 리소스 파일을 전달하는 호출 DefineUnmanagedResource을 보여 줍니다.
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
설명
어셈블리는 하나의 관리되지 않는 리소스에만 연결할 수 있습니다. 즉, 이전에 메서드 중 하나를 호출 DefineVersionInfoResource 하거나 DefineUnmanagedResource 호출한 후에 System.ArgumentException이 throw됩니다. 관리되지 않는 여러 리소스를 Microsoft ResMerge 유틸리티와 같은 도구와 병합해야 합니다(공용 언어 런타임과 함께 제공되지 않음).
적용 대상
DefineUnmanagedResource(Byte[])
이 어셈블리에 대한 관리되지 않는 리소스를 바이트의 불투명 Blob으로 정의합니다.
public:
void DefineUnmanagedResource(cli::array <System::Byte> ^ resource);
public void DefineUnmanagedResource(byte[] resource);
member this.DefineUnmanagedResource : byte[] -> unit
Public Sub DefineUnmanagedResource (resource As Byte())
매개 변수
- resource
- Byte[]
관리되지 않는 리소스를 나타내는 바이트의 불투명 Blob입니다.
예외
관리되지 않는 리소스가 이전에 정의되었습니다.
resource은 null입니다.
호출자에게 필요한 권한이 없습니다.
예제
다음 코드 샘플에서는 관리되지 않는 리소스를 나타내는 바이트 배열을 만들어 동적 어셈블리 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
설명
어셈블리는 하나의 관리되지 않는 리소스에만 연결할 수 있습니다. 즉, 이전에 호출 DefineVersionInfoResource 하거나 DefineUnmanagedResource 메서드 중 하나를 호출한 후에 System.ArgumentException이 throw됩니다. 관리되지 않는 여러 리소스를 Microsoft ResMerge 유틸리티와 같은 도구와 병합해야 합니다(공용 언어 런타임과 함께 제공되지 않음).