AssemblyBuilder.DefineDynamicModule 메서드

정의

해당 어셈블리에서 동적 모듈을 정의합니다.

오버로드

DefineDynamicModule(String)

이 어셈블리에서 명명된 임시 동적 모듈을 정의합니다.

DefineDynamicModule(String, Boolean)

이 어셈블리에서 명명된 임시 동적 모듈을 정의하고 기호 정보를 내보내야 하는지 여부를 지정합니다.

DefineDynamicModule(String, String)

지정된 파일에 저장될 지정된 이름의 유지할 수 있는 동적 모듈을 정의합니다. 기호 정보를 내보내지 않았습니다.

DefineDynamicModule(String, String, Boolean)

지속 가능한 동적 모듈을 정의하고 모듈 이름, 모듈이 저장될 파일의 이름, 기본 기호 작성기를 사용하여 기호 정보를 내보낼지 여부를 지정합니다.

DefineDynamicModule(String)

Source:
AssemblyBuilder.cs
Source:
AssemblyBuilder.cs
Source:
AssemblyBuilder.cs

이 어셈블리에서 명명된 임시 동적 모듈을 정의합니다.

public:
 System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name);
member this.DefineDynamicModule : string -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String) As ModuleBuilder

매개 변수

name
String

동적 모듈의 이름입니다.

반환

정의된 동적 모듈을 나타내는 ModuleBuilder 입니다.

예외

name 은 공백으로 시작합니다.

또는

name의 길이가 0입니다.

또는

name의 길이가 시스템 정의 최대 길이보다 긴 경우

name이(가) null인 경우

호출자에게 필요한 권한이 없는 경우

기본 기호 작성기의 어셈블리를 로드할 수 없는 경우

또는

기본 기호 작성기 인터페이스를 구현하는 형식을 찾을 수 없습니다.

예제

아래 코드 예제에서는 를 사용하여 DefineDynamicModule일시적인 동적 모듈을 만드는 방법을 보여 줍니다.

AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
   myAsmName, AssemblyBuilderAccess::Run );

// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it cannot be saved.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule( "MyModule1" );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
                     myAsmName,
                     AssemblyBuilderAccess.Run);

// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule1");
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
                      AssemblyBuilderAccess.Run)

' Create a transient dynamic module. Since no DLL name is specified with
' this constructor, it can not be saved. 
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule1")

설명

어셈블리에서 이름이 같은 여러 동적 모듈을 정의하는 것은 오류입니다.

정의된 동적 모듈은 일시적입니다. 를 사용하여 부모 동적 어셈블리를 만든 RunAndSave경우에도 동적 모듈은 저장되지 않습니다.

참고

동적 모듈을 디버깅할 때 최적화를 억제하려면 를 호출DefineDynamicModule하기 전에 특성을 동적 어셈블리에 적용 DebuggableAttribute 합니다. 플래그를 사용하여 의 instance Create DebuggableAttributeDisableOptimizations 메서드를 SetCustomAttribute 사용하여 적용합니다. 특성을 동적 어셈블리에 적용해야 합니다. 모듈에 적용해도 아무런 효과가 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineDynamicModule(String, Boolean)

이 어셈블리에서 명명된 임시 동적 모듈을 정의하고 기호 정보를 내보내야 하는지 여부를 지정합니다.

public:
 System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, bool emitSymbolInfo);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, bool emitSymbolInfo);
member this.DefineDynamicModule : string * bool -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, emitSymbolInfo As Boolean) As ModuleBuilder

매개 변수

name
String

동적 모듈의 이름입니다.

emitSymbolInfo
Boolean

기호 정보를 내보내야 하는 경우true 이고, 그러지 않은 경우 false입니다.

반환

정의된 동적 모듈을 나타내는 ModuleBuilder 입니다.

예외

name 은 공백으로 시작합니다.

또는

name의 길이가 0입니다.

또는

name의 길이가 시스템 정의 최대 길이보다 긴 경우

name이(가) null인 경우

기본 기호 작성기의 어셈블리를 로드할 수 없는 경우

또는

기본 기호 작성기 인터페이스를 구현하는 형식을 찾을 수 없습니다.

호출자에게 필요한 권한이 없는 경우

예제

아래 코드 예제에서는 기호 정보를 표시하지 않고 를 사용하여 DefineDynamicModule일시적인 동적 모듈을 만드는 방법을 보여 줍니다.

AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
   myAsmName, AssemblyBuilderAccess::Run );

// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved. By specifying the second parameter
// of the constructor as false, we can suppress the emission of symbol info.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
   "MyModule2", false );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
                     myAsmName,
                     AssemblyBuilderAccess.Run);

// Create a transient dynamic module. Since no DLL name is specified with
// this constructor, it can not be saved. By specifying the second parameter
// of the constructor as false, we can suppress the emission of symbol info.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule2",
                                 false);
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
                      AssemblyBuilderAccess.Run)

' Create a transient dynamic module. Since no DLL name is specified with
' this constructor, it can not be saved. By specifying the second parameter
' of the constructor as false, we can suppress the emission of symbol info.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule2", _
                                  False)

설명

어셈블리에서 이름이 같은 여러 동적 모듈을 정의하는 것은 오류입니다.

를 사용하여 부모 동적 어셈블리를 만든 RunAndSave경우에도 동적 모듈은 저장되지 않습니다.

참고

동적 모듈을 디버깅할 때 최적화를 억제하려면 를 호출DefineDynamicModule하기 전에 특성을 동적 어셈블리에 적용 DebuggableAttribute 합니다. 플래그를 사용하여 의 instance Create DebuggableAttributeDisableOptimizations 메서드를 SetCustomAttribute 사용하여 적용합니다. 특성을 동적 어셈블리에 적용해야 합니다. 모듈에 적용해도 아무런 효과가 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineDynamicModule(String, String)

지정된 파일에 저장될 지정된 이름의 유지할 수 있는 동적 모듈을 정의합니다. 기호 정보를 내보내지 않았습니다.

public:
 System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, System::String ^ fileName);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, string fileName);
member this.DefineDynamicModule : string * string -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, fileName As String) As ModuleBuilder

매개 변수

name
String

동적 모듈의 이름입니다.

fileName
String

동적 모듈이 저장되어야 하는 파일의 이름입니다.

반환

정의된 동적 모듈을 나타내는 ModuleBuilder 개체입니다.

예외

name 또는 fileNamenull인 경우

name 또는 fileName의 길이가 0입니다.

또는

name의 길이가 시스템 정의 최대 길이보다 긴 경우

또는

fileName 에 경로 지정(예: 디렉터리 구성 요소)이 포함됩니다.

또는

해당 어셈블리에 속하는 다른 파일의 이름과 충돌하는 경우

해당 어셈블리가 이미 저장되어 있는 경우

이 어셈블리는 Run 특성을 갖는 동적 어셈블리에 대해 호출되었습니다.

호출자에게 필요한 권한이 없는 경우

기본 기호 작성기의 어셈블리를 로드할 수 없는 경우

또는

기본 기호 작성기 인터페이스를 구현하는 형식을 찾을 수 없습니다.

예제

아래 코드 예제에서는 를 사용하여 DefineDynamicModule영구 동적 모듈을 만드는 방법을 보여 줍니다.

AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
   myAsmName, AssemblyBuilderAccess::Run );

// Create a dynamic module that can be saved as the specified DLL name.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
   "MyModule3", "MyModule3.dll" );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
                     myAsmName,
                     AssemblyBuilderAccess.Run);
// Create a dynamic module that can be saved as the specified DLL name.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule3",
                                 "MyModule3.dll");
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
                      AssemblyBuilderAccess.Run)
' Create a dynamic module that can be saved as the specified DLL name.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule3", _
                              "MyModule3.dll")

설명

지속 가능한 동적 모듈을 정의하려면 또는 특성을 사용하여 이 어셈블리를 SaveRunAndSave 만들어야 합니다.

모듈에 어셈블리 매니페스트를 포함하려는 경우 는 name 어셈블리의 이름(즉, AssemblyName.Name 동적 어셈블리를 만드는 데 사용되는 의 AssemblyName 속성)과 동일해야 하며 fileName 어셈블리를 저장할 때 지정한 파일 이름과 동일해야 합니다.

모듈이 하나만 있는 어셈블리에서 해당 모듈에는 어셈블리 매니페스트가 포함되어야 합니다.

참고

동적 모듈을 디버깅할 때 최적화를 억제하려면 를 호출DefineDynamicModule하기 전에 특성을 동적 어셈블리에 적용 DebuggableAttribute 합니다. 플래그를 사용하여 의 instance Create DebuggableAttributeDisableOptimizations 메서드를 SetCustomAttribute 사용하여 적용합니다. 특성을 동적 어셈블리에 적용해야 합니다. 모듈에 적용해도 아무런 효과가 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineDynamicModule(String, String, Boolean)

지속 가능한 동적 모듈을 정의하고 모듈 이름, 모듈이 저장될 파일의 이름, 기본 기호 작성기를 사용하여 기호 정보를 내보낼지 여부를 지정합니다.

public:
 System::Reflection::Emit::ModuleBuilder ^ DefineDynamicModule(System::String ^ name, System::String ^ fileName, bool emitSymbolInfo);
public System.Reflection.Emit.ModuleBuilder DefineDynamicModule (string name, string fileName, bool emitSymbolInfo);
member this.DefineDynamicModule : string * string * bool -> System.Reflection.Emit.ModuleBuilder
Public Function DefineDynamicModule (name As String, fileName As String, emitSymbolInfo As Boolean) As ModuleBuilder

매개 변수

name
String

동적 모듈의 이름입니다.

fileName
String

동적 모듈이 저장되어야 하는 파일의 이름입니다.

emitSymbolInfo
Boolean

true이면 기본 기호 작성기를 사용하여 기호 정보가 기록됩니다.

반환

정의된 동적 모듈을 나타내는 ModuleBuilder 개체입니다.

예외

name 또는 fileNamenull인 경우

name 또는 fileName의 길이가 0입니다.

또는

name의 길이가 시스템 정의 최대 길이보다 긴 경우

또는

fileName 에 경로 지정(예: 디렉터리 구성 요소)이 포함됩니다.

또는

해당 어셈블리에 속하는 다른 파일의 이름과 충돌하는 경우

해당 어셈블리가 이미 저장되어 있는 경우

이 어셈블리는 Run 특성을 갖는 동적 어셈블리에 대해 호출되었습니다.

기본 기호 작성기의 어셈블리를 로드할 수 없는 경우

또는

기본 기호 작성기 인터페이스를 구현하는 형식을 찾을 수 없습니다.

호출자에게 필요한 권한이 없는 경우

예제

아래 코드 예제에서는 를 사용하여 DefineDynamicModule기호 방출을 사용하여 영구 동적 모듈을 만드는 방법을 보여 줍니다.

AppDomain^ myAppDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew AssemblyName;
myAsmName->Name = "MyAssembly";
AssemblyBuilder^ myAsmBuilder = myAppDomain->DefineDynamicAssembly(
   myAsmName, AssemblyBuilderAccess::Run );

// Create a dynamic module that can be saved as the specified DLL name. By
// specifying the third parameter as true, we can allow the emission of symbol info.
ModuleBuilder^ myModuleBuilder = myAsmBuilder->DefineDynamicModule(
   "MyModule4", "MyModule4.dll", true );
AppDomain myAppDomain = Thread.GetDomain();
AssemblyName myAsmName = new AssemblyName();
myAsmName.Name = "MyAssembly";
AssemblyBuilder myAsmBuilder = myAppDomain.DefineDynamicAssembly(
                     myAsmName,
                     AssemblyBuilderAccess.Run);
// Create a dynamic module that can be saved as the specified DLL name. By
// specifying the third parameter as true, we can allow the emission of symbol info.
ModuleBuilder myModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule4",
                                 "MyModule4.dll",
                                  true);
Dim myAppDomain As AppDomain = Thread.GetDomain()
Dim myAsmName As New AssemblyName()
myAsmName.Name = "MyAssembly"
Dim myAsmBuilder As AssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAsmName, _
                      AssemblyBuilderAccess.Run)
' Create a dynamic module that can be saved as the specified DLL name. By
' specifying the third parameter as true, we can allow the emission of symbol info.
Dim myModuleBuilder As ModuleBuilder = myAsmBuilder.DefineDynamicModule("MyModule4", _
                              "MyModule4.dll", _
                              True)

설명

지속 가능한 동적 모듈을 정의하려면 또는 특성을 사용하여 이 어셈블리를 SaveRunAndSave 만들어야 합니다.

모듈에 어셈블리 매니페스트를 포함하려는 경우 는 name 어셈블리의 이름(즉, AssemblyName.Name 동적 어셈블리를 만드는 데 사용되는 의 AssemblyName 속성)과 동일해야 하며 fileName 어셈블리를 저장할 때 지정한 파일 이름과 동일해야 합니다.

모듈이 하나만 있는 어셈블리에서 해당 모듈에는 어셈블리 매니페스트가 포함되어야 합니다.

참고

동적 모듈을 디버깅할 때 최적화를 억제하려면 를 호출DefineDynamicModule하기 전에 특성을 동적 어셈블리에 적용 DebuggableAttribute 합니다. 플래그를 사용하여 의 instance Create DebuggableAttributeDisableOptimizations 메서드를 SetCustomAttribute 사용하여 적용합니다. 특성을 동적 어셈블리에 적용해야 합니다. 모듈에 적용해도 아무런 효과가 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상