AssemblyBuilder.DefineResource 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 어셈블리에 대한 독립 실행형 관리되는 리소스를 정의합니다.
오버로드
DefineResource(String, String, String) |
기본 공용 리소스 특성을 사용하여 이 어셈블리에 대한 독립 실행형 관리 리소스를 정의합니다. |
DefineResource(String, String, String, ResourceAttributes) |
이 어셈블리에 대한 독립 실행형 관리되는 리소스를 정의합니다. 관리되는 리소스에 대해 특성을 지정할 수 있습니다. |
DefineResource(String, String, String)
기본 공용 리소스 특성을 사용하여 이 어셈블리에 대한 독립 실행형 관리 리소스를 정의합니다.
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
매개 변수
- name
- String
리소스의 논리적 이름입니다.
- description
- String
리소스에 대한 텍스트 형식의 설명입니다.
- fileName
- String
논리적 이름이 매핑되는 물리적 파일 이름(.resources 파일)입니다. 이 항목에는 경로를 포함하면 안 됩니다.
반환
지정된 리소스의 ResourceWriter 개체입니다.
예외
name
이 이전에 정의되었습니다.
또는
어셈블리에 이름이 fileName
인 다른 파일이 있습니다.
또는
name
의 길이가 0입니다.
또는
fileName
의 길이가 0입니다.
또는
fileName
에 경로가 포함되어 있습니다.
name
또는 fileName
가 null
인 경우
호출자에게 필요한 권한이 없는 경우
예제
다음 예제에서는 메서드를 DefineResource 사용하여 리소스 작성기를 가져옵니다. 이 예제에서는 리소스 작성기를 사용하여 세 개의 리소스 문자열을 추가합니다.
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
설명
를 호출AddResource하여 반환 ResourceWriter 된 를 사용하여 세분화된 리소스를 추가할 수 있습니다.
fileName
는 다른 지속 가능한 모듈, 독립 실행형 관리 리소스 또는 독립 실행형 매니페스트 파일과 동일하지 않아야 합니다.
런타임은 동적 어셈블리가 Close 저장되면 메서드를 호출합니다.
참고
.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.
적용 대상
DefineResource(String, String, String, ResourceAttributes)
이 어셈블리에 대한 독립 실행형 관리되는 리소스를 정의합니다. 관리되는 리소스에 대해 특성을 지정할 수 있습니다.
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
매개 변수
- name
- String
리소스의 논리적 이름입니다.
- description
- String
리소스에 대한 텍스트 형식의 설명입니다.
- fileName
- String
논리적 이름이 매핑되는 물리적 파일 이름(.resources 파일)입니다. 이 항목에는 경로를 포함하면 안 됩니다.
- attribute
- ResourceAttributes
리소스 특성입니다.
반환
지정된 리소스의 ResourceWriter 개체입니다.
예외
name
이 이전에 정의되었거나 이름이 fileName
인 어셈블리에 다른 파일이 있는 경우입니다.
또는
name
의 길이가 0입니다.
또는
fileName
의 길이가 0입니다.
또는
fileName
에 경로가 포함되어 있습니다.
name
또는 fileName
가 null
인 경우
호출자에게 필요한 권한이 없는 경우
설명
를 호출AddResource하여 반환 ResourceWriter 된 를 사용하여 세분화된 리소스를 추가할 수 있습니다.
fileName
는 다른 지속 가능한 모듈, 독립 실행형 관리 리소스 또는 독립 실행형 매니페스트 파일과 같아야 합니다.
런타임은 동적 어셈블리가 Close 저장되면 메서드를 호출합니다.
참고
.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.
적용 대상
.NET