AssemblyBuilder.DefineDynamicModule Метод

Определение

Определяет динамический модуль в этой сборке.Defines a dynamic module in this assembly.

Перегрузки

DefineDynamicModule(String)

Определяет именованный временный динамический модуль в этой сборке.Defines a named transient dynamic module in this assembly.

DefineDynamicModule(String, Boolean)

Определяет именованный временный динамический модуль в данной сборке и указывает, требуется ли создавать данные символов.Defines a named transient dynamic module in this assembly and specifies whether symbol information should be emitted.

DefineDynamicModule(String, String)

Определяет сохраняемый динамический модуль с заданным именем, который будет сохранен в указанном файле.Defines a persistable dynamic module with the given name that will be saved to the specified file. Данные символов не созданы.No symbol information is emitted.

DefineDynamicModule(String, String, Boolean)

Определяет сохраняемый динамический модуль с указанием имени модуля, имени файла, в котором модуль будет сохранен, и необходимости создания символьной информации с помощью модуля записи символов по умолчанию.Defines a persistable dynamic module, specifying the module name, the name of the file to which the module will be saved, and whether symbol information should be emitted using the default symbol writer.

DefineDynamicModule(String)

Определяет именованный временный динамический модуль в этой сборке.Defines a named transient dynamic module in this assembly.

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

Имя динамического модуля.The name of the dynamic module.

Возвращаемое значение

ModuleBuilder

Объект ModuleBuilder, представляющий определенный динамический модуль.A ModuleBuilder representing the defined dynamic module.

Исключения

name начинается с пробела.name begins with white space.

-или--or- Длина параметра name равна нулю.The length of name is zero.

-или--or- Длина name превышает максимальную длину, определенную в системе.The length of name is greater than the system-defined maximum length.

name имеет значение null.name is null.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Не удается загрузить сборку для модуля записи символов по умолчанию.The assembly for default symbol writer cannot be loaded.

-или--or-

Не удается найти тип, реализующий интерфейс модуля записи символов по умолчанию.The type that implements the default symbol writer interface cannot be found.

Примеры

В приведенном ниже примере кода показано, как создать временный динамический модуль с помощью DefineDynamicModule .The code example below demonstrates how to create a transient dynamic module using 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")

Комментарии

Определение нескольких динамических модулей с одинаковым именем в сборке является ошибкой.It is an error to define multiple dynamic modules with the same name in an assembly.

Определенный динамический модуль является временным.The defined dynamic module is transient. Динамический модуль не сохраняется, даже если родительская динамическая сборка была создана с помощью RunAndSave .The dynamic module is not saved, even if the parent dynamic assembly was created with RunAndSave.

Примечание

Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule .To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. Создайте экземпляр DebuggableAttribute с DisableOptimizations флагом и примените его с помощью SetCustomAttribute метода.Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. Атрибут должен быть применен к динамической сборке.The attribute must be applied to the dynamic assembly. Он не действует при применении к модулю.It has no effect if applied to the module.

Примечание

Начиная с .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (См. раздел вопросы безопасности в порождении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для .NET Framework 3,5.NET Framework 3.5 или более поздней версии.(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Применяется к

DefineDynamicModule(String, Boolean)

Определяет именованный временный динамический модуль в данной сборке и указывает, требуется ли создавать данные символов.Defines a named transient dynamic module in this assembly and specifies whether symbol information should be emitted.

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

Имя динамического модуля.The name of the dynamic module.

emitSymbolInfo
Boolean

Значениеtrue , если требуется создавать данные символов; в противном случае — значение false.true if symbol information is to be emitted; otherwise, false.

Возвращаемое значение

ModuleBuilder

Объект ModuleBuilder, представляющий определенный динамический модуль.A ModuleBuilder representing the defined dynamic module.

Исключения

name начинается с пробела.name begins with white space.

-или--or- Длина параметра name равна нулю.The length of name is zero.

-или--or- Длина name превышает максимальную длину, определенную в системе.The length of name is greater than the system-defined maximum length.

name имеет значение null.name is null.

Не удается загрузить сборку для модуля записи символов по умолчанию.The assembly for default symbol writer cannot be loaded.

-или--or-

Не удается найти тип, реализующий интерфейс модуля записи символов по умолчанию.The type that implements the default symbol writer interface cannot be found.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Примеры

В приведенном ниже примере кода показано, как создать временный динамический модуль с помощью DefineDynamicModule , подавить сведения о символах.The code example below demonstrates how to create a transient dynamic module using DefineDynamicModule, suppressing symbol information.

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)

Комментарии

Определение нескольких динамических модулей с одинаковым именем в сборке является ошибкой.It is an error to define multiple dynamic modules with the same name in an assembly.

Динамический модуль не сохраняется, даже если родительская динамическая сборка была создана с помощью RunAndSave .The dynamic module is not saved, even if the parent dynamic assembly was created with RunAndSave.

Примечание

Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule .To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. Создайте экземпляр DebuggableAttribute с DisableOptimizations флагом и примените его с помощью SetCustomAttribute метода.Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. Атрибут должен быть применен к динамической сборке.The attribute must be applied to the dynamic assembly. Он не действует при применении к модулю.It has no effect if applied to the module.

Примечание

Начиная с .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (См. раздел вопросы безопасности в порождении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для .NET Framework 3,5.NET Framework 3.5 или более поздней версии.(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Применяется к

DefineDynamicModule(String, String)

Определяет сохраняемый динамический модуль с заданным именем, который будет сохранен в указанном файле.Defines a persistable dynamic module with the given name that will be saved to the specified file. Данные символов не созданы.No symbol information is emitted.

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

Имя динамического модуля.The name of the dynamic module.

fileName
String

Имя файла, в котором должен сохраняться динамический модуль.The name of the file to which the dynamic module should be saved.

Возвращаемое значение

ModuleBuilder

Объект ModuleBuilder, представляющий определенный динамический модуль.A ModuleBuilder object representing the defined dynamic module.

Исключения

Параметр name или fileName имеет значение null.name or fileName is null.

Длина параметра name или fileName равна нулю.The length of name or fileName is zero.

-или--or- Длина name превышает максимальную длину, определенную в системе.The length of name is greater than the system-defined maximum length.

-или--or- fileName содержит спецификацию пути (например, компонент каталога).fileName contains a path specification (a directory component, for example).

-или--or- Имеется конфликт с именем другого файла, который принадлежит этой сборке.There is a conflict with the name of another file that belongs to this assembly.

Эта сборка была ранее сохранена.This assembly has been previously saved.

Сборка была вызвана в динамической сборке с атрибутом Run.This assembly was called on a dynamic assembly with Run attribute.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Не удается загрузить сборку для модуля записи символов по умолчанию.The assembly for default symbol writer cannot be loaded.

-или--or-

Не удается найти тип, реализующий интерфейс модуля записи символов по умолчанию.The type that implements the default symbol writer interface cannot be found.

Примеры

В приведенном ниже примере кода показано, как создать сохраняемый динамический модуль с помощью DefineDynamicModule .The code example below demonstrates how to create a persistent dynamic module using 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")

Комментарии

Чтобы определить сохраняемый динамический модуль, эту сборку необходимо создать с помощью Save RunAndSave атрибута или.To define a persistable dynamic module, this assembly needs to be created with the Save or the RunAndSave attribute.

Если требуется, чтобы модуль содержал манифест сборки, name он должен совпадать с именем сборки (то есть AssemblyName.Name свойством, AssemblyName используемым для создания динамической сборки) и совпадать с именем fileName файла, указываемого при сохранении сборки.If you want the module to contain the assembly manifest, name should be the same as the name of the assembly (that is, the AssemblyName.Name property of the AssemblyName used to create the dynamic assembly) and fileName should be the same as the filename you specify when you save the assembly.

В сборке, содержащей только один модуль, этот модуль должен содержать манифест сборки.In an assembly with only one module, that module should contain the assembly manifest.

Примечание

Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule .To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. Создайте экземпляр DebuggableAttribute с DisableOptimizations флагом и примените его с помощью SetCustomAttribute метода.Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. Атрибут должен быть применен к динамической сборке.The attribute must be applied to the dynamic assembly. Он не действует при применении к модулю.It has no effect if applied to the module.

Примечание

Начиная с .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (См. раздел вопросы безопасности в порождении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для .NET Framework 3,5.NET Framework 3.5 или более поздней версии.(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Применяется к

DefineDynamicModule(String, String, Boolean)

Определяет сохраняемый динамический модуль с указанием имени модуля, имени файла, в котором модуль будет сохранен, и необходимости создания символьной информации с помощью модуля записи символов по умолчанию.Defines a persistable dynamic module, specifying the module name, the name of the file to which the module will be saved, and whether symbol information should be emitted using the default symbol writer.

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

Имя динамического модуля.The name of the dynamic module.

fileName
String

Имя файла, в котором должен сохраняться динамический модуль.The name of the file to which the dynamic module should be saved.

emitSymbolInfo
Boolean

Если это true, символьная информация записывается с помощью модуля записи символов по умолчанию.If true, symbolic information is written using the default symbol writer.

Возвращаемое значение

ModuleBuilder

Объект ModuleBuilder, представляющий определенный динамический модуль.A ModuleBuilder object representing the defined dynamic module.

Исключения

Параметр name или fileName имеет значение null.name or fileName is null.

Длина параметра name или fileName равна нулю.The length of name or fileName is zero.

-или--or- Длина name превышает максимальную длину, определенную в системе.The length of name is greater than the system-defined maximum length.

-или--or- fileName содержит спецификацию пути (например, компонент каталога).fileName contains a path specification (a directory component, for example).

-или--or- Имеется конфликт с именем другого файла, который принадлежит этой сборке.There is a conflict with the name of another file that belongs to this assembly.

Эта сборка была ранее сохранена.This assembly has been previously saved.

Сборка была вызвана для динамической сборки с атрибутом Run.This assembly was called on a dynamic assembly with the Run attribute.

Не удается загрузить сборку для модуля записи символов по умолчанию.The assembly for default symbol writer cannot be loaded.

-или--or-

Не удается найти тип, реализующий интерфейс модуля записи символов по умолчанию.The type that implements the default symbol writer interface cannot be found.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Примеры

В приведенном ниже примере кода показано, как создать сохраняемый динамический модуль с эмиссией символов с помощью DefineDynamicModule .The code example below demonstrates how to create a persistent dynamic module with symbol emission using 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)

Комментарии

Чтобы определить сохраняемый динамический модуль, эту сборку необходимо создать с помощью Save RunAndSave атрибута или.To define a persistable dynamic module, this assembly needs to be created with the Save or the RunAndSave attribute.

Если требуется, чтобы модуль содержал манифест сборки, name он должен совпадать с именем сборки (то есть AssemblyName.Name свойством, AssemblyName используемым для создания динамической сборки) и совпадать с именем fileName файла, указываемого при сохранении сборки.If you want the module to contain the assembly manifest, name should be the same as the name of the assembly (that is, the AssemblyName.Name property of the AssemblyName used to create the dynamic assembly) and fileName should be the same as the filename you specify when you save the assembly.

В сборке, содержащей только один модуль, этот модуль должен содержать манифест сборки.In an assembly with only one module, that module should contain the assembly manifest.

Примечание

Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule .To suppress optimizations when debugging dynamic modules, apply the DebuggableAttribute attribute to the dynamic assembly before calling DefineDynamicModule. Создайте экземпляр DebuggableAttribute с DisableOptimizations флагом и примените его с помощью SetCustomAttribute метода.Create an instance of DebuggableAttribute with the DisableOptimizations flag and apply it using the SetCustomAttribute method. Атрибут должен быть применен к динамической сборке.The attribute must be applied to the dynamic assembly. Он не действует при применении к модулю.It has no effect if applied to the module.

Примечание

Начиная с .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1 , этот член больше не требует наличия ReflectionPermission ReflectionPermissionFlag.ReflectionEmit флага.Starting with the .NET Framework 2.0 с пакетом обновления 1 (SP1).NET Framework 2.0 Service Pack 1, this member no longer requires ReflectionPermission with the ReflectionPermissionFlag.ReflectionEmit flag. (См. раздел вопросы безопасности в порождении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для .NET Framework 3,5.NET Framework 3.5 или более поздней версии.(See Security Issues in Reflection Emit.) To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Применяется к