PersistedAssemblyBuilder Kelas

Definisi

Menyediakan implementasi AssemblyBuilder yang dapat mempertahankan rakitan ke disk atau aliran.

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
Warisan
PersistedAssemblyBuilder

Keterangan

API AssemblyBuilder.Save awalnya tidak di-port ke .NET (Core) karena implementasinya sangat bergantung pada kode asli khusus Windows yang juga tidak di-port. .NET 9 menambahkan PersistedAssemblyBuilder kelas , yang menyediakan implementasi terkelola penuh Reflection.Emit yang mendukung penghematan. Implementasi ini tidak memiliki dependensi pada implementasi Reflection.Emit khusus runtime yang sudah ada sebelumnya. Artinya, sekarang ada dua implementasi yang berbeda di .NET: dapat dijalankan dan bertahan. Untuk menjalankan rakitan yang sudah dipersisten, pertama-tama simpan ke dalam aliran memori atau file, kemudian muat kembali.

Sebelum PersistedAssemblyBuilder, Anda hanya dapat menjalankan rakitan yang dihasilkan dan tidak menyimpannya. Karena assembly hanya berada dalam memori, sulit untuk di-debug. Keuntungan menyimpan rakitan dinamis ke file adalah:

  • Anda dapat memverifikasi rakitan yang dihasilkan dengan alat seperti ILVerify, atau mendekompilasi dan memeriksanya secara manual dengan alat seperti ILSpy.
  • Rakitan yang disimpan dapat dimuat secara langsung, tanpa perlu mengkompilasi lagi, yang dapat mengurangi waktu mulai aplikasi.

Untuk membuat instans PersistedAssemblyBuilder, gunakan konstruktor PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>). Parameter coreAssembly digunakan untuk menyelesaikan jenis runtime dasar dan dapat digunakan untuk memecahkan versi rakitan referensi.

  • Jika Reflection.Emit digunakan untuk menghasilkan rakitan yang hanya akan dijalankan pada versi runtime yang sama dengan versi runtime yang sedang berjalan pada kompilator (umumnya dalam proses), perakitan inti dapat dibuat lebih sederhana dengan typeof(object).Assembly. Contoh berikut menunjukkan cara membuat dan menyimpan assembly ke stream dan menjalankannya menggunakan assembly runtime saat ini:

    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]));
    }
    
  • Jika Reflection.Emit digunakan untuk menghasilkan rakitan yang menargetkan TFM tertentu, buka rakitan referensi untuk TFM yang diberikan menggunakan MetadataLoadContext dan gunakan nilai properti MetadataLoadContext.CoreAssembly untuk coreAssembly. Nilai ini memungkinkan generator berjalan pada satu versi runtime .NET dan menargetkan versi runtime .NET yang berbeda. Anda harus menggunakan jenis yang dikembalikan oleh instans MetadataLoadContext saat mereferensikan jenis inti. Misalnya, alih-alih typeof(int), temukan jenis System.Int32 di MetadataLoadContext.CoreAssembly berdasarkan nama:

    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
    }
    

Mengatur titik masuk untuk program yang dapat dieksekusi

Untuk mengatur titik entri untuk executable atau untuk mengatur opsi lain untuk file assembly, Anda dapat memanggil metode public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData) dan menggunakan metadata yang diisi untuk menghasilkan assembly dengan opsi yang diinginkan, misalnya:

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);
}

Memancarkan simbol dan menghasilkan PDB

Metadata simbol akan terisi ke dalam parameter keluar pdbBuilder saat Anda memanggil metode GenerateMetadata(BlobBuilder, BlobBuilder) pada instans PersistedAssemblyBuilder. Untuk membuat rakitan dengan PDB portabel:

  1. Buat instans ISymbolDocumentWriter dengan metode ModuleBuilder.DefineDocument(String, Guid, Guid, Guid). Saat menghasilkan IL metode, juga hasilkan info simbol yang sesuai.
  2. Buat instans PortablePdbBuilder menggunakan instans pdbBuilder yang dihasilkan oleh metode GenerateMetadata(BlobBuilder, BlobBuilder).
  3. Serialisasi PortablePdbBuilder ke dalam Blob, dan tulis Blob ke dalam aliran file PDB (hanya jika Anda menghasilkan PDB mandiri).
  4. Buat instans DebugDirectoryBuilder dan tambahkan DebugDirectoryBuilder.AddCodeViewEntry (PDB mandiri) atau DebugDirectoryBuilder.AddEmbeddedPortablePdbEntry.
  5. Atur argumen debugDirectoryBuilder opsional saat membuat instans PEBuilder.

Contoh berikut menunjukkan cara memancarkan info simbol dan menghasilkan file 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;
}

Selanjutnya, Anda dapat menambahkan CustomDebugInformation dengan memanggil metode MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle) dari instans pdbBuilder untuk menambahkan penyematan sumber dan informasi PDB tingkat lanjut pengindeksan sumber.

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));
}

Menambahkan sumber daya dengan PersistedAssemblyBuilder

Anda dapat memanggil MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32) untuk menambahkan sumber daya sebanyak yang diperlukan. Aliran harus digabungkan menjadi satu BlobBuilder yang kemudian Anda masukkan ke dalam argumen ManagedPEBuilder. Contoh berikut menunjukkan cara membuat sumber daya dan melampirkannya ke rakitan yang dibuat.

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);
}

Contoh berikut menunjukkan cara membaca sumber daya dari rakitan yang dibuat.

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

Token metadata untuk semua anggota diisi pada operasi Save. Jangan gunakan token dari tipe yang dihasilkan dan anggotanya sebelum menyimpan, karena akan memiliki nilai default atau mengakibatkan pengecualian. Aman untuk menggunakan token untuk jenis yang dirujuk, bukan dihasilkan.

Beberapa API yang tidak penting untuk memancarkan rakitan tidak diimplementasikan; misalnya, GetCustomAttributes() tidak diimplementasikan. Dengan implementasi runtime, Anda dapat menggunakan API tersebut setelah membuat jenisnya. Untuk AssemblyBuilderyang bertahan, mereka melempar NotSupportedException atau NotImplementedException. Jika Anda memiliki skenario yang memerlukan API tersebut, ajukan masalah di repositori dotnet/runtime.

Untuk cara alternatif untuk menghasilkan file perakitan, lihat MetadataBuilder.

Warning

PersistedAssemblyBuilder API memerlukan lingkungan yang sepenuhnya tepercaya dengan input tepercaya, mirip dengan teknologi lain seperti kompilator. Tidak ada batasan selain validasi dasar untuk IL yang dihasilkan yang dapat dikandung AssemblyBuilder . Itu termasuk validasi untuk nama anggota, jumlah, dan metadata terkait, seperti atribut kustom.

Konstruktor

Nama Deskripsi
PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>)

Membuat instans PersistedAssemblyBuilder yang dapat disimpan ke file atau aliran.

Properti

Nama Deskripsi
CodeBase
Kedaluwarsa.

Mendapatkan lokasi rakitan, seperti yang ditentukan awalnya (seperti dalam AssemblyName objek).

(Diperoleh dari AssemblyBuilder)
CustomAttributes

Mendapatkan koleksi yang berisi atribut kustom assembly ini.

(Diperoleh dari Assembly)
EntryPoint

Mengembalikan titik masuk rakitan ini.

(Diperoleh dari AssemblyBuilder)
EscapedCodeBase
Kedaluwarsa.
Kedaluwarsa.

Mendapatkan URI, termasuk karakter escape, yang mewakili basis kode.

(Diperoleh dari Assembly)
ExportedTypes

Mendapatkan kumpulan jenis publik yang ditentukan dalam rakitan ini yang terlihat di luar rakitan.

(Diperoleh dari Assembly)
FullName

Mendapatkan nama tampilan rakitan dinamis saat ini.

HostContext

Mendapatkan konteks host tempat assembly dinamis sedang dibuat.

(Diperoleh dari AssemblyBuilder)
IsCollectible

Mendapatkan nilai yang menunjukkan apakah rakitan dinamis ini dipegang dalam koleksi AssemblyLoadContext.

(Diperoleh dari AssemblyBuilder)
IsDynamic

Mendapatkan nilai yang menunjukkan bahwa rakitan saat ini adalah rakitan dinamis.

(Diperoleh dari AssemblyBuilder)
IsFullyTrusted

Mendapatkan nilai yang menunjukkan apakah rakitan saat ini dimuat dengan kepercayaan penuh.

(Diperoleh dari Assembly)
Location

Mendapatkan lokasi, dalam format basis kode, dari file yang dimuat yang berisi manifes jika tidak disalin bayangan.

(Diperoleh dari AssemblyBuilder)
ManifestModule

Mendapatkan modul dalam saat ini PersistedAssemblyBuilder yang berisi manifes perakitan.

ReflectionOnly

Mendapatkan nilai yang menunjukkan apakah rakitan dinamis berada dalam konteks hanya refleksi.

(Diperoleh dari AssemblyBuilder)

Metode

Nama Deskripsi
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional dan memiliki kultur, argumen, dan atribut pengikatan dan aktivasi yang ditentukan.

(Diperoleh dari Assembly)
CreateInstance(String, Boolean)

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional.

(Diperoleh dari Assembly)
CreateInstance(String)

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, menggunakan pencarian peka huruf besar/kecil.

(Diperoleh dari Assembly)
DefineDynamicModule(String)

Mendefinisikan modul dinamis sementara bernama dalam rakitan ini.

(Diperoleh dari AssemblyBuilder)
DefineDynamicModuleCore(String)

Ketika ditimpa dalam kelas turunan, mendefinisikan modul dinamis dalam rakitan ini.

(Diperoleh dari AssemblyBuilder)
Equals(Object)

Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek yang ditentukan.

(Diperoleh dari AssemblyBuilder)
GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder)

Menghasilkan metadata untuk PersistedAssemblyBuilder.

GenerateMetadata(BlobBuilder, BlobBuilder)

Menghasilkan metadata untuk PersistedAssemblyBuilder.

GetCustomAttributes(Boolean)

Mengembalikan semua atribut kustom yang telah diterapkan ke saat ini AssemblyBuilder.

(Diperoleh dari AssemblyBuilder)
GetCustomAttributes(Type, Boolean)

Mengembalikan semua atribut kustom yang telah diterapkan ke saat ini AssemblyBuilder, dan yang berasal dari jenis atribut tertentu.

(Diperoleh dari AssemblyBuilder)
GetCustomAttributesData()

Mengembalikan CustomAttributeData objek yang berisi informasi tentang atribut yang telah diterapkan ke .AssemblyBuilder

(Diperoleh dari AssemblyBuilder)
GetDynamicModule(String)

Mengembalikan modul dinamis dengan nama yang ditentukan.

(Diperoleh dari AssemblyBuilder)
GetDynamicModuleCore(String)

Saat ditimpa dalam kelas turunan, mengembalikan modul dinamis dengan nama yang ditentukan.

(Diperoleh dari AssemblyBuilder)
GetExportedTypes()

Mendapatkan jenis yang diekspor yang ditentukan dalam rakitan ini.

(Diperoleh dari AssemblyBuilder)
GetFile(String)

FileStream Mendapatkan untuk file yang ditentukan dalam tabel file manifes perakitan ini.

(Diperoleh dari AssemblyBuilder)
GetFiles()

Mendapatkan file dalam tabel file manifes perakitan.

(Diperoleh dari Assembly)
GetFiles(Boolean)

Mendapatkan file dalam tabel file manifes perakitan, menentukan apakah akan menyertakan modul sumber daya.

(Diperoleh dari AssemblyBuilder)
GetForwardedTypes()

Menyediakan implementasi AssemblyBuilder yang dapat mempertahankan rakitan ke disk atau aliran.

(Diperoleh dari Assembly)
GetHashCode()

Mengembalikan kode hash untuk instans ini.

(Diperoleh dari AssemblyBuilder)
GetLoadedModules()

Mendapatkan semua modul yang dimuat yang merupakan bagian dari rakitan ini.

(Diperoleh dari Assembly)
GetLoadedModules(Boolean)

Mengembalikan semua modul yang dimuat yang merupakan bagian dari rakitan ini, dan secara opsional menyertakan modul sumber daya.

(Diperoleh dari AssemblyBuilder)
GetManifestResourceInfo(String)

Mengembalikan informasi tentang bagaimana sumber daya yang diberikan telah dipertahankan.

(Diperoleh dari AssemblyBuilder)
GetManifestResourceNames()

Memuat sumber daya manifes yang ditentukan dari rakitan ini.

(Diperoleh dari AssemblyBuilder)
GetManifestResourceStream(String)

Memuat sumber daya manifes yang ditentukan dari rakitan ini.

(Diperoleh dari AssemblyBuilder)
GetManifestResourceStream(Type, String)

Memuat sumber daya manifes yang ditentukan, yang dicakup oleh namespace dari jenis yang ditentukan, dari rakitan ini.

(Diperoleh dari AssemblyBuilder)
GetModule(String)

Mendapatkan modul yang ditentukan dalam rakitan ini.

(Diperoleh dari AssemblyBuilder)
GetModules()

Mendapatkan semua modul yang merupakan bagian dari perakitan ini.

(Diperoleh dari Assembly)
GetModules(Boolean)

Mendapatkan semua modul yang merupakan bagian dari perakitan ini, dan secara opsional menyertakan modul sumber daya.

(Diperoleh dari AssemblyBuilder)
GetName()

AssemblyName Mendapatkan untuk rakitan ini.

(Diperoleh dari Assembly)
GetName(Boolean)

AssemblyName Mendapatkan yang ditentukan ketika rakitan dinamis saat ini dibuat.

GetObjectData(SerializationInfo, StreamingContext)
Kedaluwarsa.

Mendapatkan informasi serialisasi dengan semua data yang diperlukan untuk menginstansiasi kembali perakitan ini.

(Diperoleh dari Assembly)
GetReferencedAssemblies()

Mendapatkan daftar AssemblyName objek yang tidak lengkap untuk rakitan yang dirujuk oleh ini AssemblyBuilder.

(Diperoleh dari AssemblyBuilder)
GetSatelliteAssembly(CultureInfo, Version)

Mendapatkan versi rakitan satelit yang ditentukan untuk budaya yang ditentukan.

(Diperoleh dari AssemblyBuilder)
GetSatelliteAssembly(CultureInfo)

Mendapatkan rakitan satelit untuk budaya yang ditentukan.

(Diperoleh dari AssemblyBuilder)
GetType(String, Boolean, Boolean)

Mendapatkan jenis yang ditentukan dari jenis yang telah ditentukan dan dibuat di saat ini AssemblyBuilder.

(Diperoleh dari AssemblyBuilder)
GetType(String, Boolean)

Mendapatkan objek dengan nama yang ditentukan dalam instans Type rakitan dan secara opsional melemparkan pengecualian jika jenisnya tidak ditemukan.

(Diperoleh dari Assembly)
GetType(String)

Mendapatkan objek dengan nama yang ditentukan dalam instans Type rakitan.

(Diperoleh dari Assembly)
GetTypes()

Mendapatkan semua jenis yang ditentukan dalam rakitan ini.

(Diperoleh dari Assembly)
IsDefined(Type, Boolean)

Mengembalikan nilai yang menunjukkan apakah satu atau beberapa instans dari jenis atribut yang ditentukan diterapkan ke anggota ini.

(Diperoleh dari AssemblyBuilder)
LoadModule(String, Byte[], Byte[])

Memuat modul, internal ke rakitan ini, dengan gambar berbasis format file objek umum (COFF) yang berisi modul yang dipancarkan, atau file sumber daya. Byte mentah yang mewakili simbol untuk modul juga dimuat.

(Diperoleh dari Assembly)
LoadModule(String, Byte[])

Memuat modul, internal ke rakitan ini, dengan gambar berbasis format file objek umum (COFF) yang berisi modul yang dipancarkan, atau file sumber daya.

(Diperoleh dari Assembly)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
Save(Stream)

Menserialisasikan rakitan ke aliran yang ditentukan.

Save(String)

Menyimpan rakitan ke disk.

SetCustomAttribute(ConstructorInfo, Byte[])

Atur atribut kustom pada rakitan ini menggunakan blob atribut kustom tertentu.

(Diperoleh dari AssemblyBuilder)
SetCustomAttribute(CustomAttributeBuilder)

Atur atribut kustom pada rakitan ini menggunakan pembangun atribut kustom.

(Diperoleh dari AssemblyBuilder)
SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Saat ditimpa di kelas turunan, atur atribut kustom pada rakitan ini.

(Diperoleh dari AssemblyBuilder)
ToString()

Mengembalikan nama lengkap rakitan, juga dikenal sebagai nama tampilan.

(Diperoleh dari Assembly)

Acara

Nama Deskripsi
ModuleResolve

Terjadi ketika pemuat kelas runtime bahasa umum tidak dapat menyelesaikan referensi ke modul internal perakitan melalui cara normal.

(Diperoleh dari Assembly)

Metode Ekstensi

Nama Deskripsi
GetCustomAttribute(Assembly, Type)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke rakitan tertentu.

GetCustomAttribute<T>(Assembly)

Mengambil atribut kustom dari jenis tertentu yang diterapkan ke rakitan tertentu.

GetCustomAttributes(Assembly, Type)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke rakitan tertentu.

GetCustomAttributes(Assembly)

Mengambil kumpulan atribut kustom yang diterapkan ke rakitan tertentu.

GetCustomAttributes<T>(Assembly)

Mengambil kumpulan atribut kustom dari jenis tertentu yang diterapkan ke rakitan tertentu.

GetExportedTypes(Assembly)

Menyediakan implementasi AssemblyBuilder yang dapat mempertahankan rakitan ke disk atau aliran.

GetModules(Assembly)

Menyediakan implementasi AssemblyBuilder yang dapat mempertahankan rakitan ke disk atau aliran.

GetTypes(Assembly)

Menyediakan implementasi AssemblyBuilder yang dapat mempertahankan rakitan ke disk atau aliran.

IsDefined(Assembly, Type)

Menunjukkan apakah atribut kustom dari jenis tertentu diterapkan ke rakitan tertentu.

TryGetRawMetadata(Assembly, Byte*, Int32)

Mengambil bagian metadata dari rakitan, untuk digunakan dengan MetadataReader.

Berlaku untuk