Nyelv

PersistedAssemblyBuilder Osztály

Definíció

Olyan AssemblyBuilder-implementációt biztosít, amely megőrzi a szerelvényt egy lemezen vagy streamen.

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
Öröklődés
PersistedAssemblyBuilder

Megjegyzések

A AssemblyBuilder.Save API-t eredetileg nem a .NET-be (Core) portozták, mert az implementáció nagymértékben függött a Windows-specifikus natív kódtól, amelyet szintén nem portolt. A .NET 9 hozzáadta az PersistedAssemblyBuilder osztályt, amely teljes körűen felügyelt Reflection.Emit implementációt biztosít, amely támogatja a mentést. Ez az implementáció nem függ a meglévő, futtatókörnyezet-specifikus Reflection.Emit implementációtól. Ez azt jelzi, hogy most már két különböző implementáció létezik a .NET-ben: futtatható és perzisztens. A megőrzött összeállítás futtatásához először mentse egy memóriafolyamba vagy egy fájlba, majd töltse be újra.

A PersistedAssemblyBuilderelőtt csak létrehozott szerelvényt futtathat, és nem mentheti. Mivel a szerelvény csak a memóriában volt, nehéz volt hibakeresést végezni. A dinamikus szerelvény fájlokba való mentésének előnyei a következők:

  • A létrehozott szerelvényt ellenőrizheti olyan eszközökkel, mint az ILVerify, vagy bonthatja, és manuálisan is megvizsgálhatja azokat olyan eszközökkel, mint az ILSpy.
  • A mentett összeállítás közvetlenül betölthető anélkül, hogy ismét le kellene fordítani, ami csökkentheti az alkalmazás indítási idejét.

Egy PersistedAssemblyBuilder-példány létrehozásához használja a PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>) konstruktort. A coreAssembly paraméter az alap futtatókörnyezet-típusok feloldására szolgál, és használható a referencia-szerelvény verziószámozásának feloldásához:

  • Ha Reflection.Emit olyan szerelvény létrehozására szolgál, amelyet csak a fordító által futtatott futtatókörnyezeti verzióval megegyező futtatókörnyezeti verzióval hajtanak végre (általában a procben), az alapvető szerelvény egyszerűen typeof(object).Assembly. Az alábbi példa bemutatja, hogyan hozhat létre és menthet egy összeállítást egy streambe, majd hogyan futtathatja azt az aktuális futtatókörnyezeti összeállítás használatával.

    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]));
    }
    
  • Ha Reflection.Emit egy adott TFM-et megcélozó szerelvény létrehozásához használatos, nyissa meg az adott TFM referenciaszerelvényeit az MetadataLoadContext használatával, és használja a MetadataLoadContext.CoreAssembly tulajdonság értékét coreAssembly. Ez az érték lehetővé teszi, hogy a generátor egy .NET-futtatókörnyezeti verzión fusson, és egy másik .NET-futtatókörnyezeti verziót célozzon meg. Az MetadataLoadContext példány által visszaadott típusokat kell használnia az alaptípusokra való hivatkozáskor. Például typeof(int)helyett keresse meg a System.Int32 típust MetadataLoadContext.CoreAssembly név szerint:

    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
    }
    

A végrehajtható program belépési pontjának beállítása

Egy végrehajtható fájl belépési pontjának beállításához vagy a szerelvényfájl egyéb beállításainak beállításához meghívhatja a public MetadataBuilder GenerateMetadata(out BlobBuilder ilStream, out BlobBuilder mappedFieldData) metódust, és a feltöltött metaadatok használatával létrehozhatja a szerelvényt a kívánt beállításokkal, például:

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

Szimbólumok kibocsátása és PDB létrehozása

A szimbólumok metaadatai a pdbBuilder kimeneti paraméterbe kerülnek, amikor meghívja a GenerateMetadata(BlobBuilder, BlobBuilder) metódust egy PersistedAssemblyBuilder-példányon. Szerelvény létrehozása hordozható PDB-vel:

  1. Hozzon létre ISymbolDocumentWriter példányt a ModuleBuilder.DefineDocument(String, Guid, Guid, Guid) metódussal. A metódus IL-jének kibocsátása közben a megfelelő szimbólumadatokat is kibocsátja.
  2. Hozzon létre egy PortablePdbBuilder példányt a pdbBuilder metódus által létrehozott GenerateMetadata(BlobBuilder, BlobBuilder)-példány használatával.
  3. Szerializálja a PortablePdbBuilder-t Blob-é, és írja a Blob-t egy PDB-fájlstreambe (csak akkor, ha önálló PDB-t hoz létre).
  4. Hozzon létre egy DebugDirectoryBuilder-példányt, és vegyen fel egy DebugDirectoryBuilder.AddCodeViewEntry (önálló PDB) vagy DebugDirectoryBuilder.AddEmbeddedPortablePdbEntry.
  5. A debugDirectoryBuilder-példány létrehozásakor állítsa be az opcionális PEBuilder argumentumot.

Az alábbi példa bemutatja, hogyan bocsáthat ki szimbólumadatokat, és hogyan hozhat létre PDB-fájlt.

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

Emellett hozzáadhatja a forrásbeágyazási és forrásindexelési fejlett PDB-információkat, ha meghívja a CustomDebugInformation metódust a MetadataBuilder.AddCustomDebugInformation(EntityHandle, GuidHandle, BlobHandle) példányból a pdbBuilder hozzáadásához.

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

Erőforrások hozzáadása a PersistedAssemblyBuilder használatával

Hívja a MetadataBuilder.AddManifestResource(ManifestResourceAttributes, StringHandle, EntityHandle, UInt32) számot, hogy annyi erőforrást adjon hozzá, amennyi szükséges. Az adatfolyamokat össze kell fűzni egy BlobBuilder-vá, amit a ManagedPEBuilder argumentumba ad meg. Az alábbi példa bemutatja, hogyan hozhat létre erőforrásokat, és hogyan csatolhatja őket a létrehozott szerelvényhez.

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

Az alábbi példa bemutatja, hogyan olvashatja be az erőforrásokat a létrehozott szerelvényből.

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

Az összes tag metaadat-jogkivonatai a Save műveletben lesznek feltöltve. Mentés előtt ne használja a létrehozott típus és tagjai jogkivonatait, mert alapértelmezett értékekkel rendelkeznek, vagy kivételeket vetnek ki. Biztonságos tokent használni a hivatkozott, nem generált típusok esetén.

Bizonyos API-k, amelyek nem fontosak az assembly kibocsátásához, nincsenek implementálva; például a GetCustomAttributes(). A futtatókörnyezet implementálásával a típus létrehozása után használhatta ezeket az API-kat. A megőrzött AssemblyBuilder-ért valamilyen NotSupportedException-et vagy NotImplementedException-t dobnak. Ha olyan forgatókönyve van, amely megköveteli az API-k használatát, küldjön be egy hibajelentést a dotnet/runtime tárházban.

A szerelvényfájlok létrehozásának alternatív módjáért lásd a(z) MetadataBuilder.

Warning

PersistedAssemblyBuilder Az API-knak megbízható bemenettel rendelkező, megbízható környezetre van szükségük, hasonlóan más technológiákhoz, például fordítókhoz. A generált IL-hez az alapszintű ellenőrzésen kívül nincsenek olyan korlátozások, amelyeket a AssemblyBuilder rendszer tartalmazhat. Ez magában foglalja a tagok nevének, számának és a kapcsolódó metaadatok, például az egyéni attribútumok érvényesítését.

Konstruktorok

Name Description
PersistedAssemblyBuilder(AssemblyName, Assembly, IEnumerable<CustomAttributeBuilder>)

Létrehoz egy PersistedAssemblyBuilder fájlt vagy streambe menthető példányt.

Tulajdonságok

Name Description
CodeBase
Elavult.

Lekéri a szerelvény eredetileg megadott helyét (például egy AssemblyName objektumban).

(Öröklődés forrása AssemblyBuilder)
CustomAttributes

Lekéri a szerelvény egyéni attribútumait tartalmazó gyűjteményt.

(Öröklődés forrása Assembly)
EntryPoint

A szerelvény belépési pontját adja vissza.

(Öröklődés forrása AssemblyBuilder)
EscapedCodeBase
Elavult.
Elavult.

Lekéri a kódbázist képviselő URI-t, beleértve a feloldó karaktereket is.

(Öröklődés forrása Assembly)
ExportedTypes

Lekéri az ebben a szerelvényben definiált nyilvános típusok gyűjteményét, amelyek a szerelvényen kívül láthatók.

(Öröklődés forrása Assembly)
FullName

Lekéri az aktuális dinamikus szerelvény megjelenítendő nevét.

HostContext

Lekéri azt a gazdagépkörnyezetet, amelyben a dinamikus szerelvény létrejön.

(Öröklődés forrása AssemblyBuilder)
IsCollectible

Olyan értéket kap, amely jelzi, hogy a dinamikus szerelvény egy gyűjthető helyen van-e tárolva AssemblyLoadContext.

(Öröklődés forrása AssemblyBuilder)
IsDynamic

Olyan értéket kap, amely azt jelzi, hogy az aktuális szerelvény egy dinamikus szerelvény.

(Öröklődés forrása AssemblyBuilder)
IsFullyTrusted

Olyan értéket kap, amely jelzi, hogy az aktuális szerelvény teljes megbízhatósággal van-e betöltve.

(Öröklődés forrása Assembly)
Location

Lekéri a jegyzékfájlt tartalmazó betöltött fájl helyét kódbázis formátumban, ha az nincs árnyékmásolva.

(Öröklődés forrása AssemblyBuilder)
ManifestModule

Lekéri az aktuális PersistedAssemblyBuilder modult, amely tartalmazza a szerelvényjegyzéket.

ReflectionOnly

Lekéri az értéket, amely jelzi, hogy a dinamikus szerelvény csak tükröződési környezetben van-e.

(Öröklődés forrása AssemblyBuilder)

Metódusok

Name Description
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűk megkülönböztetésével, valamint a megadott kultúrával, argumentumokkal, kötési és aktiválási attribútumokkal.

(Öröklődés forrása Assembly)
CreateInstance(String, Boolean)

Megkeresi a megadott típust ebből a szerelvényből, és létrehozza annak egy példányát a rendszeraktivátor használatával, a kis- és nagybetűket nem kötelező kereséssel.

(Öröklődés forrása Assembly)
CreateInstance(String)

Megkeresi a megadott típust ebből a szerelvényből, és létrehoz egy példányt a rendszeraktivátor használatával, a kis- és nagybetűket megkülönböztető kereséssel.

(Öröklődés forrása Assembly)
DefineDynamicModule(String)

Egy elnevezett átmeneti dinamikus modult határoz meg ebben a szerelvényben.

(Öröklődés forrása AssemblyBuilder)
DefineDynamicModuleCore(String)

Ha egy származtatott osztályban felül van bírálva, egy dinamikus modult határoz meg ebben a szerelvényben.

(Öröklődés forrása AssemblyBuilder)
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e a megadott objektummal.

(Öröklődés forrása AssemblyBuilder)
GenerateMetadata(BlobBuilder, BlobBuilder, MetadataBuilder)

Létrehozza a metaadatokat a PersistedAssemblyBuilder.

GenerateMetadata(BlobBuilder, BlobBuilder)

Létrehozza a metaadatokat a PersistedAssemblyBuilder.

GetCustomAttributes(Boolean)

Az aktuálisra AssemblyBuilderalkalmazott összes egyéni attribútumot adja vissza.

(Öröklődés forrása AssemblyBuilder)
GetCustomAttributes(Type, Boolean)

Az aktuálisra AssemblyBuilderalkalmazott összes egyéni attribútumot adja vissza, amely egy adott attribútumtípusból származik.

(Öröklődés forrása AssemblyBuilder)
GetCustomAttributesData()

CustomAttributeData Az aktuálisra AssemblyBuilderalkalmazott attribútumokkal kapcsolatos információkat tartalmazó objektumokat ad vissza.

(Öröklődés forrása AssemblyBuilder)
GetDynamicModule(String)

A megadott névvel rendelkező dinamikus modult adja vissza.

(Öröklődés forrása AssemblyBuilder)
GetDynamicModuleCore(String)

Ha egy származtatott osztályban felül van bírálva, a megadott névvel adja vissza a dinamikus modult.

(Öröklődés forrása AssemblyBuilder)
GetExportedTypes()

Lekéri a szerelvényben definiált exportált típusokat.

(Öröklődés forrása AssemblyBuilder)
GetFile(String)

FileStream Lekéri a megadott fájlt a szerelvény jegyzékfájljának fájltáblájában.

(Öröklődés forrása AssemblyBuilder)
GetFiles()

Lekéri a fájlokat egy szerelvényjegyzék fájltáblájában.

(Öröklődés forrása Assembly)
GetFiles(Boolean)

Lekéri a fájlokat egy szerelvényjegyzék fájltáblájában, megadva, hogy az erőforrásmodulokat is tartalmazza-e.

(Öröklődés forrása AssemblyBuilder)
GetForwardedTypes()

Olyan AssemblyBuilder-implementációt biztosít, amely megőrzi a szerelvényt egy lemezen vagy streamen.

(Öröklődés forrása Assembly)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása AssemblyBuilder)
GetLoadedModules()

Lekéri a szerelvény részét képező összes betöltött modult.

(Öröklődés forrása Assembly)
GetLoadedModules(Boolean)

A szerelvény részét képező összes betöltött modult visszaadja, és opcionálisan erőforrásmodulokat is tartalmaz.

(Öröklődés forrása AssemblyBuilder)
GetManifestResourceInfo(String)

Az adott erőforrás megőrzésének módját adja vissza.

(Öröklődés forrása AssemblyBuilder)
GetManifestResourceNames()

Betölti a megadott jegyzékerőforrást ebből a szerelvényből.

(Öröklődés forrása AssemblyBuilder)
GetManifestResourceStream(String)

Betölti a megadott jegyzékerőforrást ebből a szerelvényből.

(Öröklődés forrása AssemblyBuilder)
GetManifestResourceStream(Type, String)

Betölti a megadott jegyzékerőforrást, amely a megadott típus névtere szerint van meghatározva ebből a szerelvényből.

(Öröklődés forrása AssemblyBuilder)
GetModule(String)

Lekéri a megadott modult ebben a szerelvényben.

(Öröklődés forrása AssemblyBuilder)
GetModules()

Lekéri a szerelvény részét képező összes modult.

(Öröklődés forrása Assembly)
GetModules(Boolean)

Lekéri a szerelvény részét képező összes modult, és opcionálisan erőforrásmodulokat is tartalmaz.

(Öröklődés forrása AssemblyBuilder)
GetName()

Kap egy ilyen AssemblyName szerelvényt.

(Öröklődés forrása Assembly)
GetName(Boolean)

Lekéri az AssemblyName aktuális dinamikus szerelvény létrehozásakor megadott értéket.

GetObjectData(SerializationInfo, StreamingContext)
Elavult.

Lekéri a szerializálási adatokat a szerelvény újbóli létrehozásához szükséges összes adattal.

(Öröklődés forrása Assembly)
GetReferencedAssemblies()

Lekéri az AssemblyName ebben AssemblyBuildera szakaszban hivatkozott szerelvények objektumainak hiányos listáját.

(Öröklődés forrása AssemblyBuilder)
GetSatelliteAssembly(CultureInfo, Version)

Lekéri a műholdas szerelvény megadott verzióját a megadott kultúrához.

(Öröklődés forrása AssemblyBuilder)
GetSatelliteAssembly(CultureInfo)

Lekéri a megadott kultúrához tartozó műholdas szerelvényt.

(Öröklődés forrása AssemblyBuilder)
GetType(String, Boolean, Boolean)

Lekéri a megadott típust az aktuálisban AssemblyBuilderdefiniált és létrehozott típusok közül.

(Öröklődés forrása AssemblyBuilder)
GetType(String, Boolean)

Lekéri a Type megadott nevű objektumot a szerelvénypéldányban, és opcionálisan kivételt ad, ha a típus nem található.

(Öröklődés forrása Assembly)
GetType(String)

Lekéri az Type objektumot a megadott névvel a szerelvénypéldányban.

(Öröklődés forrása Assembly)
GetTypes()

Lekéri a szerelvényben definiált összes típust.

(Öröklődés forrása Assembly)
IsDefined(Type, Boolean)

Olyan értéket ad vissza, amely jelzi, hogy a megadott attribútumtípus egy vagy több példánya van-e alkalmazva erre a tagra.

(Öröklődés forrása AssemblyBuilder)
LoadModule(String, Byte[], Byte[])

Betölti a modult a szerelvényen belül egy közös objektumfájl-formátummal (COFF)-alapú képpel, amely egy kibocsátott modult vagy egy erőforrásfájlt tartalmaz. A modul szimbólumait jelképező nyers bájtok is betöltésre kerülnek.

(Öröklődés forrása Assembly)
LoadModule(String, Byte[])

Betölti a modult a szerelvényen belül egy közös objektumfájl-formátummal (COFF)-alapú képpel, amely egy kibocsátott modult vagy egy erőforrásfájlt tartalmaz.

(Öröklődés forrása Assembly)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Save(Stream)

Szerializálja a szerelvényt a megadott streamre.

Save(String)

Menti a szerelvényt a lemezre.

SetCustomAttribute(ConstructorInfo, Byte[])

Egyéni attribútum beállítása ezen a szerelvényen egy megadott egyéni attribútumblob használatával.

(Öröklődés forrása AssemblyBuilder)
SetCustomAttribute(CustomAttributeBuilder)

Egyéni attribútum beállítása ezen a szerelvényen egy egyéni attribútumszerkesztővel.

(Öröklődés forrása AssemblyBuilder)
SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>)

Ha felül van bírálva egy származtatott osztályban, beállít egy egyéni attribútumot ezen a szerelvényen.

(Öröklődés forrása AssemblyBuilder)
ToString()

A szerelvény teljes nevét adja vissza, más néven a megjelenítendő nevet.

(Öröklődés forrása Assembly)

esemény

Name Description
ModuleResolve

Akkor fordul elő, ha a közös nyelvi futtatókörnyezeti osztálybetöltő normál módon nem tudja feloldani a szerelvény belső moduljára mutató hivatkozást.

(Öröklődés forrása Assembly)

Bővítő metódusok

Name Description
GetCustomAttribute(Assembly, Type)

Lekéri a megadott típusú egyéni attribútumot, amelyet egy adott szerelvényre alkalmaz.

GetCustomAttribute<T>(Assembly)

Lekéri a megadott típusú egyéni attribútumot, amelyet egy adott szerelvényre alkalmaz.

GetCustomAttributes(Assembly, Type)

Egy megadott típusú egyéni attribútumok gyűjteményét kéri le, amelyek egy adott szerelvényre lesznek alkalmazva.

GetCustomAttributes(Assembly)

Egy adott szerelvényre alkalmazott egyéni attribútumok gyűjteményét kéri le.

GetCustomAttributes<T>(Assembly)

Egy megadott típusú egyéni attribútumok gyűjteményét kéri le, amelyek egy adott szerelvényre lesznek alkalmazva.

GetExportedTypes(Assembly)

Olyan AssemblyBuilder-implementációt biztosít, amely megőrzi a szerelvényt egy lemezen vagy streamen.

GetModules(Assembly)

Olyan AssemblyBuilder-implementációt biztosít, amely megőrzi a szerelvényt egy lemezen vagy streamen.

GetTypes(Assembly)

Olyan AssemblyBuilder-implementációt biztosít, amely megőrzi a szerelvényt egy lemezen vagy streamen.

IsDefined(Assembly, Type)

Azt jelzi, hogy a megadott típusú egyéni attribútumok alkalmazhatók-e egy adott szerelvényre.

TryGetRawMetadata(Assembly, Byte*, Int32)

Lekéri a szerelvény metaadatszakaszát a következővel MetadataReadervaló használatra: .

A következőre érvényes: