AssemblyBuilder.DefineDynamicModule 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
해당 어셈블리에서 동적 모듈을 정의합니다.
오버로드
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
이(가) 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
이(가) 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
또는 fileName
가 null
인 경우
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
또는 fileName
가 null
인 경우
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 이상을 대상으로 해야 합니다.
적용 대상
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기