AssemblyBuilder.DefineDynamicModule Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет динамический модуль в этой сборке.
Перегрузки
| Имя | Описание |
|---|---|
| DefineDynamicModule(String) |
Определяет именованный временный динамический модуль в этой сборке. |
| DefineDynamicModule(String, Boolean) |
Определяет именованный временный динамический модуль в этой сборке и указывает, следует ли выдавать сведения о символах. |
| DefineDynamicModule(String, String) |
Определяет сохраняемый динамический модуль с заданным именем, который будет сохранен в указанном файле. Никакие сведения о символах не создаются. |
| DefineDynamicModule(String, String, Boolean) |
Определяет сохраняемый динамический модуль, указывая имя модуля, имя файла, в котором будет сохранен модуль, и следует ли создавать сведения о символах с помощью средства записи символов по умолчанию. |
DefineDynamicModule(String)
- Исходный код:
- AssemblyBuilder.cs
- Исходный код:
- AssemblyBuilder.cs
- Исходный код:
- 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 превышает заданную системой максимальную длину.
-или-
Только платформа .NET Framework: модуль с тем же name уже определен в этой сборке.
name равно null.
Только .NET Core и .NET 5+ — динамический модуль уже определен в этой сборке.
Вызывающий объект не имеет требуемого разрешения.
Сборка для записи символов по умолчанию не может быть загружена.
-или-
Тип, реализующий интерфейс записи символов по умолчанию, не найден.
Примеры
В приведенном ниже примере кода показано, как создать временный динамический модуль с помощью DefineDynamicModule.
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")
Комментарии
Только .NET Core и .NET 5+ : сборки с несколькими модулями не поддерживаются. В сборке может быть определен только один динамический модуль.
Только .NET Framework: это ошибка для определения нескольких динамических модулей с одинаковым именем в сборке.
Определенный динамический модуль является временным. Динамический модуль не сохраняется, даже если созданная RunAndSaveродительская динамическая сборка.
Заметка
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Создайте экземпляр DebuggableAttribute с флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода. Атрибут должен применяться к динамической сборке. Он не действует, если применяется к модулю.
Применяется к
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 = 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. Создайте экземпляр DebuggableAttribute с флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода. Атрибут должен применяться к динамической сборке. Он не действует, если применяется к модулю.
Применяется к
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 = 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 .
Если вы хотите, чтобы модуль содержал манифест сборки, name должен совпадать с именем сборки (т AssemblyName.Name . е. свойством используемой AssemblyName для создания динамической сборки) и fileName должно совпадать с именем файла, указанным при сохранении сборки.
В сборке только с одним модулем этот модуль должен содержать манифест сборки.
Заметка
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Создайте экземпляр DebuggableAttribute с флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода. Атрибут должен применяться к динамической сборке. Он не действует, если применяется к модулю.
Применяется к
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 = 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 .
Если вы хотите, чтобы модуль содержал манифест сборки, name должен совпадать с именем сборки (т AssemblyName.Name . е. свойством используемой AssemblyName для создания динамической сборки) и fileName должно совпадать с именем файла, указанным при сохранении сборки.
В сборке только с одним модулем этот модуль должен содержать манифест сборки.
Заметка
Чтобы отключить оптимизацию при отладке динамических модулей, примените DebuggableAttribute атрибут к динамической сборке перед вызовом DefineDynamicModule. Создайте экземпляр DebuggableAttribute с флагом DisableOptimizations и примените его с помощью SetCustomAttribute метода. Атрибут должен применяться к динамической сборке. Он не действует, если применяется к модулю.