AssemblyBuilder.DefineDynamicModule Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет динамический модуль в этой сборке.
Перегрузки
DefineDynamicModule(String) |
Определяет именованный временный динамический модуль в этой сборке. |
DefineDynamicModule(String, Boolean) |
Определяет именованный временный динамический модуль в данной сборке и указывает, требуется ли создавать данные символов. |
DefineDynamicModule(String, String) |
Определяет сохраняемый динамический модуль с заданным именем, который будет сохранен в указанном файле. Данные символов не созданы. |
DefineDynamicModule(String, String, Boolean) |
Определяет сохраняемый динамический модуль с указанием имени модуля, имени файла, в котором модуль будет сохранен, и необходимости создания символьной информации с помощью модуля записи символов по умолчанию. |
DefineDynamicModule(String)
- Исходный код:
- AssemblyBuilder.cs
- Исходный код:
- AssemblyBuilder.cs
- Исходный код:
- 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
равна нулю.
-или-
Длина 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помощью .
Примечание
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Create экземпляр с DebuggableAttribute флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода . Атрибут должен применяться к динамической сборке. Она не оказывает влияния при применении к модулю.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .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
равна нулю.
-или-
Длина 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помощью .
Примечание
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Create экземпляр с DebuggableAttribute флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода . Атрибут должен применяться к динамической сборке. Она не оказывает влияния при применении к модулю.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .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
равна нулю.
-или-
Длина 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 для создания динамической сборки) и fileName
совпадать с именем файла, AssemblyName.Name указанного при сохранении сборки.
В сборке с одним модулем этот модуль должен содержать манифест сборки.
Примечание
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Create экземпляр с DebuggableAttribute флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода . Атрибут должен применяться к динамической сборке. Она не оказывает влияния при применении к модулю.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .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
равна нулю.
-или-
Длина 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 для создания динамической сборки) и fileName
совпадать с именем файла, AssemblyName.Name указанного при сохранении сборки.
В сборке с одним модулем этот модуль должен содержать манифест сборки.
Примечание
Чтобы подавить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Create экземпляр с DebuggableAttribute флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода . Атрибут должен применяться к динамической сборке. Она не оказывает никакого влияния при применении к модулю.
Примечание
Начиная с платформа .NET Framework 2.0 с пакетом обновления 1 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по