PersistedAssemblyBuilder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет реализацию AssemblyBuilder, которая может сохранять сборку на диске или потоке.
public ref class PersistedAssemblyBuilder sealed : System::Reflection::Emit::AssemblyBuilder
public sealed class PersistedAssemblyBuilder : System.Reflection.Emit.AssemblyBuilder
type PersistedAssemblyBuilder = class
inherit AssemblyBuilder
Public NotInheritable Class PersistedAssemblyBuilder
Inherits AssemblyBuilder
- Наследование
Комментарии
API AssemblyBuilder.Save изначально не был перенесен в .NET (Core), так как реализация сильно зависит от собственного кода Windows, который также не был перенесен. .NET 9 добавил PersistedAssemblyBuilder класс, который предоставляет полностью управляемую Reflection.Emit реализацию, которая поддерживает сохранение. Эта реализация не зависит от уже существующей, специфичной для среды выполнения реализации Reflection.Emit. То есть теперь в .NET существуют две разные реализации: выполняемые и сохраняемые. Чтобы запустить сохраненную сборку, сначала сохраните ее в поток памяти или файл, а затем загрузите его обратно.
Перед PersistedAssemblyBuilderможно запустить только созданную сборку и не сохранить ее. Так как сборка была только в памяти, было трудно выполнить отладку. Преимущества сохранения динамической сборки в файл:
- Вы можете проверить созданную сборку с помощью таких средств, как ILVerify, или декомпилировать и вручную проверить ее с помощью таких средств, как ILSpy.
- Сохраненная сборка может быть загружена напрямую, не требуя повторной компиляции, что может снизить время запуска приложения.
Чтобы создать экземпляр PersistedAssemblyBuilder, используйте конструктор PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>). Параметр coreAssembly используется для разрешения базовых типов среды выполнения и может использоваться для разрешения ссылочных версий сборки:
Если
Reflection.Emitиспользуется для создания сборки, которая будет выполняться только в той же версии среды выполнения, что и версия среды выполнения компилятора (обычно в proc), базовая сборка может быть простоtypeof(object).Assembly. В следующем примере показано, как создать и сохранить сборку в потоке и запустить ее с текущей сборкой среды выполнения:public static void CreateSaveAndRunAssembly() { PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly); ModuleBuilder mob = ab.DefineDynamicModule("MyModule"); TypeBuilder tb = mob.DefineType( "MyType", TypeAttributes.Public | TypeAttributes.Class); MethodBuilder meb = tb.DefineMethod( "SumMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(int), [typeof(int), typeof(int)]); ILGenerator il = meb.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Add); il.Emit(OpCodes.Ret); tb.CreateType(); using var stream = new MemoryStream(); ab.Save(stream); // Or pass filename to save into a file. stream.Seek(0, SeekOrigin.Begin); Assembly assembly = AssemblyLoadContext.Default.LoadFromStream(stream); MethodInfo method = assembly.GetType("MyType").GetMethod("SumMethod"); Console.WriteLine(method.Invoke(null, [5, 10])); }Если
Reflection.Emitиспользуется для создания сборки, предназначенной для определённого TFM, откройте эталонные сборки для данного TFM с помощьюMetadataLoadContextи используйте значение свойства MetadataLoadContext.CoreAssembly дляcoreAssembly. Это значение позволяет генератору работать на одной версии среды выполнения .NET и нацеливаться на другую версию среды выполнения .NET. При ссылке на основные типы следует использовать типы, возвращаемые экземпляромMetadataLoadContext. Например, вместоtypeof(int)найдите типSystem.Int32вMetadataLoadContext.CoreAssemblyпо имени:public static void CreatePersistedAssemblyBuilderCoreAssemblyWithMetadataLoadContext(string refAssembliesPath) { PathAssemblyResolver resolver = new(Directory.GetFiles(refAssembliesPath, "*.dll")); using MetadataLoadContext context = new(resolver); Assembly coreAssembly = context.CoreAssembly; PersistedAssemblyBuilder ab = new(new AssemblyName("MyDynamicAssembly"), coreAssembly); TypeBuilder typeBuilder = ab.DefineDynamicModule("MyModule").DefineType("Test", TypeAttributes.Public); MethodBuilder methodBuilder = typeBuilder.DefineMethod("Method", MethodAttributes.Public, coreAssembly.GetType(typeof(int).FullName), Type.EmptyTypes); // .. add members and save the assembly }
Установка точки входа для исполняемого файла
Чтобы задать точку входа для исполняемого файла или задать другие параметры для файла сборки, можно вызвать метод public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData) и использовать заполненные метаданные для создания сборки с нужными параметрами, например:
public static void SetEntryPoint()
{
PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly);
TypeBuilder tb = ab.DefineDynamicModule("MyModule").DefineType("MyType", TypeAttributes.Public | TypeAttributes.Class);
// ...
MethodBuilder entryPoint = tb.DefineMethod("Main", MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.Static);
ILGenerator il2 = entryPoint.GetILGenerator();
// ...
il2.Emit(OpCodes.Ret);
tb.CreateType();
MetadataBuilder metadataBuilder = ab.GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder fieldData);
ManagedPEBuilder peBuilder = new(
header: PEHeaderBuilder.CreateExecutableHeader(),
metadataRootBuilder: new MetadataRootBuilder(metadataBuilder),
ilStream: ilStream,
mappedFieldData: fieldData,
entryPoint: MetadataTokens.MethodDefinitionHandle(entryPoint.MetadataToken));
BlobBuilder peBlob = new();
peBuilder.Serialize(peBlob);
// Create the executable:
using FileStream fileStream = new("MyAssembly.exe", FileMode.Create, FileAccess.Write);
peBlob.WriteContentTo(fileStream);
}
Выдача символов и создание PDB
Метаданные символов заполняются параметром pdbBuilder out при вызове метода GenerateMetadata(BlobBuilder, BlobBuilder) в экземпляре PersistedAssemblyBuilder. Чтобы создать сборку с переносимым PDB, выполните приведенные действия.
- Создайте экземпляры ISymbolDocumentWriter с помощью метода ModuleBuilder.DefineDocument(String, Guid, Guid, Guid). При генерации IL метода также выводится соответствующая информация о символах.
- Создайте экземпляр PortablePdbBuilder с помощью экземпляра
pdbBuilder, созданного методом GenerateMetadata(BlobBuilder, BlobBuilder). - Сериализируйте
PortablePdbBuilderв Blobи напишитеBlobв поток PDB-файлов (только если создается автономная PDB). - Создайте экземпляр DebugDirectoryBuilder и добавьте DebugDirectoryBuilder.AddCodeViewEntry (автономный PDB) или DebugDirectoryBuilder.AddEmbeddedPortablePdbEntry.
- Задайте необязательный аргумент
debugDirectoryBuilderпри создании экземпляра PEBuilder.
В следующем примере показано, как выдавать сведения о символах и создавать PDB-файл.
static void GenerateAssemblyWithPdb()
{
PersistedAssemblyBuilder ab = new PersistedAssemblyBuilder(new AssemblyName("MyAssembly"), typeof(object).Assembly);
ModuleBuilder mb = ab.DefineDynamicModule("MyModule");
TypeBuilder tb = mb.DefineType("MyType", TypeAttributes.Public | TypeAttributes.Class);
MethodBuilder mb1 = tb.DefineMethod("SumMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(int), [typeof(int), typeof(int)]);
ISymbolDocumentWriter srcDoc = mb.DefineDocument("MySourceFile.cs", SymLanguageType.CSharp);
ILGenerator il = mb1.GetILGenerator();
LocalBuilder local = il.DeclareLocal(typeof(int));
local.SetLocalSymInfo("myLocal");
il.MarkSequencePoint(srcDoc, 7, 0, 7, 11);
...
il.Emit(OpCodes.Ret);
MethodBuilder entryPoint = tb.DefineMethod("Main", MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.Static);
ILGenerator il2 = entryPoint.GetILGenerator();
il2.BeginScope();
...
il2.EndScope();
...
tb.CreateType();
MetadataBuilder metadataBuilder = ab.GenerateMetadata(out BlobBuilder ilStream, out _, out MetadataBuilder pdbBuilder);
MethodDefinitionHandle entryPointHandle = MetadataTokens.MethodDefinitionHandle(entryPoint.MetadataToken);
DebugDirectoryBuilder debugDirectoryBuilder = GeneratePdb(pdbBuilder, metadataBuilder.GetRowCounts(), entryPointHandle);
ManagedPEBuilder peBuilder = new ManagedPEBuilder(
header: new PEHeaderBuilder(imageCharacteristics: Characteristics.ExecutableImage, subsystem: Subsystem.WindowsCui),
metadataRootBuilder: new MetadataRootBuilder(metadataBuilder),
ilStream: ilStream,
debugDirectoryBuilder: debugDirectoryBuilder,
entryPoint: entryPointHandle);
BlobBuilder peBlob = new BlobBuilder();
peBuilder.Serialize(peBlob);
using var fileStream = new FileStream("MyAssembly.exe", FileMode.Create, FileAccess.Write);
peBlob.WriteContentTo(fileStream);
}
static DebugDirectoryBuilder GeneratePdb(MetadataBuilder pdbBuilder, ImmutableArray<int> rowCounts, MethodDefinitionHandle entryPointHandle)
{
BlobBuilder portablePdbBlob = new BlobBuilder();
PortablePdbBuilder portablePdbBuilder = new PortablePdbBuilder(pdbBuilder, rowCounts, entryPointHandle);
BlobContentId pdbContentId = portablePdbBuilder.Serialize(portablePdbBlob);
// In case saving PDB to a file
using FileStream fileStream = new FileStream("MyAssemblyEmbeddedSource.pdb", FileMode.Create, FileAccess.Write);
portablePdbBlob.WriteContentTo(fileStream);
DebugDirectoryBuilder debugDirectoryBuilder = new DebugDirectoryBuilder();
debugDirectoryBuilder.AddCodeViewEntry("MyAssemblyEmbeddedSource.pdb", pdbContentId, portablePdbBuilder.FormatVersion);
// In case embedded in PE:
// debugDirectoryBuilder.AddEmbeddedPortablePdbEntry(portablePdbBlob, portablePdbBuilder.FormatVersion);
return debugDirectoryBuilder;
}
Кроме того, можно добавить CustomDebugInformation, вызвав метод MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle) из экземпляра pdbBuilder, чтобы внедрить исходные данные и индексировать их, добавив расширенные сведения о PDB.
private static void EmbedSource(MetadataBuilder pdbBuilder)
{
byte[] sourceBytes = File.ReadAllBytes("MySourceFile2.cs");
BlobBuilder sourceBlob = new BlobBuilder();
sourceBlob.WriteBytes(sourceBytes);
pdbBuilder.AddCustomDebugInformation(MetadataTokens.DocumentHandle(1),
pdbBuilder.GetOrAddGuid(new Guid("0E8A571B-6926-466E-B4AD-8AB04611F5FE")), pdbBuilder.GetOrAddBlob(sourceBlob));
}
Добавление ресурсов с помощью PersistedAssemblyBuilder
Вы можете вызвать MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32), чтобы добавить столько ресурсов, сколько необходимо. Потоки необходимо объединить в один BlobBuilder, который передается в аргумент ManagedPEBuilder. В следующем примере показано, как создать ресурсы и присоединить их к созданной сборке.
public static void SetResource()
{
PersistedAssemblyBuilder ab = new(new AssemblyName("MyAssembly"), typeof(object).Assembly);
ab.DefineDynamicModule("MyModule");
MetadataBuilder metadata = ab.GenerateMetadata(out BlobBuilder ilStream, out _);
using MemoryStream stream = new();
ResourceWriter myResourceWriter = new(stream);
myResourceWriter.AddResource("AddResource 1", "First added resource");
myResourceWriter.AddResource("AddResource 2", "Second added resource");
myResourceWriter.AddResource("AddResource 3", "Third added resource");
myResourceWriter.Close();
byte[] data = stream.ToArray();
BlobBuilder resourceBlob = new();
resourceBlob.WriteInt32(data.Length);
resourceBlob.WriteBytes(data);
metadata.AddManifestResource(
ManifestResourceAttributes.Public,
metadata.GetOrAddString("MyResource.resources"),
implementation: default,
offset: 0);
ManagedPEBuilder peBuilder = new(
header: PEHeaderBuilder.CreateLibraryHeader(),
metadataRootBuilder: new MetadataRootBuilder(metadata),
ilStream: ilStream,
managedResources: resourceBlob);
BlobBuilder blob = new();
peBuilder.Serialize(blob);
// Create the assembly:
using FileStream fileStream = new("MyAssemblyWithResource.dll", FileMode.Create, FileAccess.Write);
blob.WriteContentTo(fileStream);
}
В следующем примере показано, как считывать ресурсы из созданной сборки.
public static void ReadResource()
{
Assembly readAssembly = Assembly.LoadFile(Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
"MyAssemblyWithResource.dll"));
// Use ResourceManager.GetString() to read the resources.
ResourceManager rm = new("MyResource", readAssembly);
Console.WriteLine("Using ResourceManager.GetString():");
Console.WriteLine($"{rm.GetString("AddResource 1", CultureInfo.InvariantCulture)}");
Console.WriteLine($"{rm.GetString("AddResource 2", CultureInfo.InvariantCulture)}");
Console.WriteLine($"{rm.GetString("AddResource 3", CultureInfo.InvariantCulture)}");
// Use ResourceSet to enumerate the resources.
Console.WriteLine();
Console.WriteLine("Using ResourceSet:");
ResourceSet resourceSet = rm.GetResourceSet(CultureInfo.InvariantCulture, createIfNotExists: true, tryParents: false);
foreach (DictionaryEntry entry in resourceSet)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
// Use ResourceReader to enumerate the resources.
Console.WriteLine();
Console.WriteLine("Using ResourceReader:");
using Stream stream = readAssembly.GetManifestResourceStream("MyResource.resources")!;
using ResourceReader reader = new(stream);
foreach (DictionaryEntry entry in reader)
{
Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
}
}
Note
Маркеры метаданных для всех членов заполняются в процессе выполнения операции Save. Не используйте токены созданного типа и его членов перед сохранением, так как они будут иметь значения по умолчанию или вызывать исключения. Безопасно использовать маркеры для типов, на которые ссылаются, а не создаются.
Некоторые API, которые не имеют значения для создания сборки, не реализуются; например, GetCustomAttributes() не реализован. Реализация в среде выполнения позволяет использовать эти API после создания типа. Для сохранённых AssemblyBuilderони используют NotSupportedException или NotImplementedException. Если у вас есть сценарий, требующий этих API, отправьте проблему в репозитории dotnet/runtime .
Альтернативный способ создания файлов сборок см. в разделе MetadataBuilder.
Предупреждение
PersistedAssemblyBuilder API требуют полностью доверенной среды с доверенными входными данными, аналогично другим технологиям, таким как компиляторы. Нет ограничений, отличных от базовой проверки для созданного IL, который AssemblyBuilder может содержать. Это включает проверку имени члена, подсчета и связанных метаданных, таких как настраиваемые атрибуты.
Конструкторы
| Имя | Описание |
|---|---|
| PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) |
PersistedAssemblyBuilder Создает экземпляр, который можно сохранить в файле или потоке. |
Свойства
| Имя | Описание |
|---|---|
| CodeBase |
Устаревшие.
Получает расположение сборки, как указано первоначально (например, в объекте AssemblyName ). (Унаследовано от AssemblyBuilder) |
| CustomAttributes |
Возвращает коллекцию, содержащую пользовательские атрибуты этой сборки. (Унаследовано от Assembly) |
| EntryPoint |
Возвращает точку входа этой сборки. (Унаследовано от AssemblyBuilder) |
| EscapedCodeBase |
Устаревшие.
Устаревшие.
Получает универсальный код ресурса (URI), включая escape-символы, представляющий базу кода. (Унаследовано от Assembly) |
| ExportedTypes |
Возвращает коллекцию общедоступных типов, определенных в этой сборке, видимых вне сборки. (Унаследовано от Assembly) |
| FullName |
Возвращает отображаемое имя текущей динамической сборки. |
| HostContext |
Возвращает контекст узла, в котором создается динамическая сборка. (Унаследовано от AssemblyBuilder) |
| IsCollectible |
Возвращает значение, указывающее, хранится ли эта динамическая сборка в коллекционируемом AssemblyLoadContextобъекте. (Унаследовано от AssemblyBuilder) |
| IsDynamic |
Возвращает значение, указывающее, что текущая сборка является динамической сборкой. (Унаследовано от AssemblyBuilder) |
| IsFullyTrusted |
Возвращает значение, указывающее, загружена ли текущая сборка с полным доверием. (Унаследовано от Assembly) |
| Location |
Получает расположение в формате базы кода загруженного файла, содержащего манифест, если он не копируется теневыми копиями. (Унаследовано от AssemblyBuilder) |
| ManifestModule |
Возвращает модуль в текущем PersistedAssemblyBuilder , содержавшемся манифесте сборки. |
| ReflectionOnly |
Возвращает значение, указывающее, находится ли динамическая сборка в контексте только для отражения. (Унаследовано от AssemblyBuilder) |
Методы
| Имя | Описание |
|---|---|
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Находит указанный тип из этой сборки и создает экземпляр с помощью системного активатора, с необязательным поиском с учетом регистра и указанным языком и региональными параметрами, аргументами и атрибутами привязки и активации. (Унаследовано от Assembly) |
| CreateInstance(String, Boolean) |
Находит указанный тип из этой сборки и создает экземпляр его с помощью активатора системы с необязательным поиском с учетом регистра. (Унаследовано от Assembly) |
| CreateInstance(String) |
Находит указанный тип из этой сборки и создает экземпляр его с помощью активатора системы, используя поиск с учетом регистра. (Унаследовано от Assembly) |
| DefineDynamicModule(String) |
Определяет именованный временный динамический модуль в этой сборке. (Унаследовано от AssemblyBuilder) |
| DefineDynamicModuleCore(String) |
При переопределении в производном классе определяет динамический модуль в этой сборке. (Унаследовано от AssemblyBuilder) |
| Equals(Object) |
Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от AssemblyBuilder) |
| GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder) |
Создает метаданные для PersistedAssemblyBuilder. |
| GenerateMetadata(BlobBuilder, BlobBuilder) |
Создает метаданные для PersistedAssemblyBuilder. |
| GetCustomAttributes(Boolean) |
Возвращает все настраиваемые атрибуты, примененные к текущему AssemblyBuilder. (Унаследовано от AssemblyBuilder) |
| GetCustomAttributes(Type, Boolean) |
Возвращает все настраиваемые атрибуты, примененные к текущему AssemblyBuilder, и производные от указанного типа атрибута. (Унаследовано от AssemblyBuilder) |
| GetCustomAttributesData() |
Возвращает CustomAttributeData объекты, содержащие сведения об атрибутах, примененных к текущему AssemblyBuilder. (Унаследовано от AssemblyBuilder) |
| GetDynamicModule(String) |
Возвращает динамический модуль с указанным именем. (Унаследовано от AssemblyBuilder) |
| GetDynamicModuleCore(String) |
При переопределении в производном классе возвращает динамический модуль с указанным именем. (Унаследовано от AssemblyBuilder) |
| GetExportedTypes() |
Возвращает экспортированные типы, определенные в этой сборке. (Унаследовано от AssemblyBuilder) |
| GetFile(String) |
FileStream Возвращает для указанного файла в таблице файлов манифеста этой сборки. (Унаследовано от AssemblyBuilder) |
| GetFiles() |
Возвращает файлы в таблице файлов манифеста сборки. (Унаследовано от Assembly) |
| GetFiles(Boolean) |
Возвращает файлы в таблице файлов манифеста сборки, указывая, следует ли включать модули ресурсов. (Унаследовано от AssemblyBuilder) |
| GetForwardedTypes() |
Предоставляет реализацию AssemblyBuilder, которая может сохранять сборку на диске или потоке. (Унаследовано от Assembly) |
| GetHashCode() |
Возвращает хэш-код для этого экземпляра. (Унаследовано от AssemblyBuilder) |
| GetLoadedModules() |
Возвращает все загруженные модули, которые входят в эту сборку. (Унаследовано от Assembly) |
| GetLoadedModules(Boolean) |
Возвращает все загруженные модули, которые являются частью этой сборки, и при необходимости включает модули ресурсов. (Унаследовано от AssemblyBuilder) |
| GetManifestResourceInfo(String) |
Возвращает сведения о том, как был сохранен указанный ресурс. (Унаследовано от AssemblyBuilder) |
| GetManifestResourceNames() |
Загружает указанный ресурс манифеста из этой сборки. (Унаследовано от AssemblyBuilder) |
| GetManifestResourceStream(String) |
Загружает указанный ресурс манифеста из этой сборки. (Унаследовано от AssemblyBuilder) |
| GetManifestResourceStream(Type, String) |
Загружает указанный ресурс манифеста, ограниченный пространством имен указанного типа, из этой сборки. (Унаследовано от AssemblyBuilder) |
| GetModule(String) |
Возвращает указанный модуль в этой сборке. (Унаследовано от AssemblyBuilder) |
| GetModules() |
Возвращает все модули, которые являются частью этой сборки. (Унаследовано от Assembly) |
| GetModules(Boolean) |
Возвращает все модули, которые являются частью этой сборки, и при необходимости включает модули ресурсов. (Унаследовано от AssemblyBuilder) |
| GetName() |
Возвращает для этой сборки AssemblyName . (Унаследовано от Assembly) |
| GetName(Boolean) |
Возвращает значение, указанное AssemblyName при создании текущей динамической сборки. |
| GetObjectData(SerializationInfo, StreamingContext) |
Устаревшие.
Получает сведения сериализации со всеми данными, необходимыми для повторного создания этой сборки. (Унаследовано от Assembly) |
| GetReferencedAssemblies() |
Возвращает неполный список AssemblyName объектов для сборок, на которые ссылается эта AssemblyBuilderссылка. (Унаследовано от AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo, Version) |
Возвращает указанную версию вспомогательной сборки для указанного языка и региональных параметров. (Унаследовано от AssemblyBuilder) |
| GetSatelliteAssembly(CultureInfo) |
Возвращает вспомогательные сборки для указанного языка и региональных параметров. (Унаследовано от AssemblyBuilder) |
| GetType(String, Boolean, Boolean) |
Возвращает указанный тип из определенных и созданных типов в текущем AssemblyBuilder. (Унаследовано от AssemblyBuilder) |
| GetType(String, Boolean) |
Type Возвращает объект с указанным именем в экземпляре сборки и при необходимости создает исключение, если тип не найден. (Унаследовано от Assembly) |
| GetType(String) |
Type Возвращает объект с указанным именем в экземпляре сборки. (Унаследовано от Assembly) |
| GetTypes() |
Возвращает все типы, определенные в этой сборке. (Унаследовано от Assembly) |
| IsDefined(Type, Boolean) |
Возвращает значение, указывающее, применяется ли один или несколько экземпляров указанного типа атрибута к этому элементу. (Унаследовано от AssemblyBuilder) |
| LoadModule(String, Byte[], Byte[]) |
Загружает модуль, внутренний в эту сборку, с общим форматом файлов объектов (COFF), содержащим создаваемый модуль или файл ресурса. Необработанные байты, представляющие символы для модуля, также загружаются. (Унаследовано от Assembly) |
| LoadModule(String, Byte[]) |
Загружает модуль, внутренний в эту сборку, с общим форматом файлов объектов (COFF), содержащим создаваемый модуль или файл ресурса. (Унаследовано от Assembly) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Save(Stream) |
Сериализует сборку в указанный поток. |
| Save(String) |
Сохраняет сборку на диск. |
| SetCustomAttribute(ConstructorInfo, Byte[]) |
Задайте настраиваемый атрибут для этой сборки с помощью указанного пользовательского blob-объекта атрибута. (Унаследовано от AssemblyBuilder) |
| SetCustomAttribute(CustomAttributeBuilder) |
Задайте настраиваемый атрибут для этой сборки с помощью пользовательского построителя атрибутов. (Унаследовано от AssemblyBuilder) |
| SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
При переопределении в производном классе задает настраиваемый атрибут для этой сборки. (Унаследовано от AssemblyBuilder) |
| ToString() |
Возвращает полное имя сборки, также известное как отображаемое имя. (Унаследовано от Assembly) |
События
| Имя | Описание |
|---|---|
| ModuleResolve |
Происходит, когда загрузчик класса cl language runtime не может разрешить ссылку на внутренний модуль сборки с помощью обычных средств. (Унаследовано от Assembly) |
Методы расширения
| Имя | Описание |
|---|---|
| GetCustomAttribute(Assembly, Type) |
Извлекает настраиваемый атрибут указанного типа, применяемого к указанной сборке. |
| GetCustomAttribute<T>(Assembly) |
Извлекает настраиваемый атрибут указанного типа, применяемого к указанной сборке. |
| GetCustomAttributes(Assembly, Type) |
Извлекает коллекцию настраиваемых атрибутов указанного типа, применяемого к указанной сборке. |
| GetCustomAttributes(Assembly) |
Извлекает коллекцию пользовательских атрибутов, применяемых к указанной сборке. |
| GetCustomAttributes<T>(Assembly) |
Извлекает коллекцию настраиваемых атрибутов указанного типа, применяемого к указанной сборке. |
| GetExportedTypes(Assembly) |
Предоставляет реализацию AssemblyBuilder, которая может сохранять сборку на диске или потоке. |
| GetModules(Assembly) |
Предоставляет реализацию AssemblyBuilder, которая может сохранять сборку на диске или потоке. |
| GetTypes(Assembly) |
Предоставляет реализацию AssemblyBuilder, которая может сохранять сборку на диске или потоке. |
| IsDefined(Assembly, Type) |
Указывает, применяются ли пользовательские атрибуты указанного типа к указанной сборке. |
| TryGetRawMetadata(Assembly, Byte*, Int32) |
Извлекает раздел метаданных сборки для использования MetadataReader. |