AssemblyName Třída

Definice

Popisuje jedinečnou identitu sestavení v plném rozsahu.

public sealed class AssemblyName
public sealed class AssemblyName : ICloneable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyName : ICloneable, System.Runtime.InteropServices._AssemblyName, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
Dědičnost
AssemblyName
Atributy
Implementuje

Příklady

Tento příklad ukazuje, jak použít různé třídy reflexe k analýze metadat obsažených v sestavení.

using System;
using System.Reflection;

class Module1
{
    public static void Main()
    {
        // This variable holds the amount of indenting that
        // should be used when displaying each line of information.
        Int32 indent = 0;
        // Display information about the EXE assembly.
        Assembly a = typeof(Module1).Assembly;
        Display(indent, "Assembly identity={0}", a.FullName);
        Display(indent+1, "Codebase={0}", a.CodeBase);

        // Display the set of assemblies our assemblies reference.

        Display(indent, "Referenced assemblies:");
        foreach (AssemblyName an in a.GetReferencedAssemblies() )
        {
             Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken())));
        }
        Display(indent, "");

        // Display information about each assembly loading into this AppDomain.
        foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies())
        {
            Display(indent, "Assembly: {0}", b);

            // Display information about each module of this assembly.
            foreach ( Module m in b.GetModules(true) )
            {
                Display(indent+1, "Module: {0}", m.Name);
            }

            // Display information about each type exported from this assembly.

            indent += 1;
            foreach ( Type t in b.GetExportedTypes() )
            {
                Display(0, "");
                Display(indent, "Type: {0}", t);

                // For each type, show its members & their custom attributes.

                indent += 1;
                foreach (MemberInfo mi in t.GetMembers() )
                {
                    Display(indent, "Member: {0}", mi.Name);
                    DisplayAttributes(indent, mi);

                    // If the member is a method, display information about its parameters.

                    if (mi.MemberType==MemberTypes.Method)
                    {
                        foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
                        {
                            Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
                        }
                    }

                    // If the member is a property, display information about the property's accessor methods.
                    if (mi.MemberType==MemberTypes.Property)
                    {
                        foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() )
                        {
                            Display(indent+1, "Accessor method: {0}", am);
                        }
                    }
                }
                indent -= 1;
            }
            indent -= 1;
        }
    }

    // Displays the custom attributes applied to the specified member.
    public static void DisplayAttributes(Int32 indent, MemberInfo mi)
    {
        // Get the set of custom attributes; if none exist, just return.
        object[] attrs = mi.GetCustomAttributes(false);
        if (attrs.Length==0) {return;}

        // Display the custom attributes applied to this member.
        Display(indent+1, "Attributes:");
        foreach ( object o in attrs )
        {
            Display(indent+2, "{0}", o.ToString());
        }
    }

    // Display a formatted string indented by the specified amount.
    public static void Display(Int32 indent, string format, params object[] param)

    {
        Console.Write(new string(' ', indent*2));
        Console.WriteLine(format, param);
    }
}

//The output shown below is abbreviated.
//
//Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
//  Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005/Projects/Reflection/Reflection/obj/Debug/Reflection.exe
//Referenced assemblies:
//  Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
//
//Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//
//  Type: System.Object
//    Member: GetType
//    Member: ToString
//    Member: Equals
//      Parameter: Type=System.Object, Name=obj
//    Member: Equals
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: ReferenceEquals
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: GetHashCode
//    Member: .ctor
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//
//  Type: System.ICloneable
//    Member: Clone
//
//  Type: System.Collections.IEnumerable
//    Member: GetEnumerator
//      Attributes:
//        System.Runtime.InteropServices.DispIdAttribute
//
//  Type: System.Collections.ICollection
//    Member: CopyTo
//      Parameter: Type=System.Array, Name=array
//      Parameter: Type=System.Int32, Name=index
//    Member: get_Count
//    Member: get_SyncRoot
//    Member: get_IsSynchronized
//    Member: Count
//      Accessor method: Int32 get_Count()
//    Member: SyncRoot
//      Accessor method: System.Object get_SyncRoot()
//    Member: IsSynchronized
//      Accessor method: Boolean get_IsSynchronized()
//
//  Type: System.Collections.IList
//    Member: get_Item
//      Parameter: Type=System.Int32, Name=index
//    Member: set_Item
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Add
//      Parameter: Type=System.Object, Name=value
//    Member: Contains
//      Parameter: Type=System.Object, Name=value
//    Member: Clear
//    Member: get_IsReadOnly
//    Member: get_IsFixedSize
//    Member: IndexOf
//      Parameter: Type=System.Object, Name=value
//    Member: Insert
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Remove
//      Parameter: Type=System.Object, Name=value
//    Member: RemoveAt
//      Parameter: Type=System.Int32, Name=index
//    Member: Item
//      Accessor method: System.Object get_Item(Int32)
//      Accessor method: Void set_Item(Int32, System.Object)
//    Member: IsReadOnly
//      Accessor method: Boolean get_IsReadOnly()
//    Member: IsFixedSize
//      Accessor method: Boolean get_IsFixedSize()
//
//  Type: System.Array
//    Member: IndexOf
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: AsReadOnly
//      Parameter: Type=T[], Name=array
//    Member: Resize
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[]&, Name=array
//      Parameter: Type=System.Int32, Name=newSize
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//      Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer

Poznámky

Objekt AssemblyName obsahuje informace o sestavení, které můžete použít k vytvoření vazby s tímto sestavením. Identita sestavení se skládá z následujících:

  • Jednoduchý název.

  • Číslo verze.

  • Pár kryptografických klíčů.

  • Podporovaná jazyková verze.

Jednoduchý název je obvykle název souboru manifestu bez jeho přípony. Pár klíčů obsahuje veřejný a privátní klíč, který se používá k vytváření podpisů se silným názvem pro sestavení.

Všechny kompilátory, které podporují modul Common Language Runtime, vygenerují jednoduchý název vnořené třídy a reflexe při dotazu sestaví pozměněný název podle následujících pravidel.

Oddělovač Význam
Zpětné lomítko (\) Řídicí znak.
Čárka (,) Předchází názvu sestavení.
Znaménko plus (+) Předchází vnořenou třídu.

Plně kvalifikovaný název třídy může vypadat například takto:

ContainingClass+NestedClass,MyAssembly

Výraz "++" se změní na \+\+" a "\" na "\\".

Tento kvalifikovaný název lze zachovat a později použít k načtení Type. Pokud chcete vyhledat a načíst Type, použijte GetType buď jenom s názvem typu, nebo s názvem kvalifikovaného typu sestavení. GetType s názvem typu bude hledat Type pouze v sestavení volajícího a pak v sestavení Systému. GetType s názvem kvalifikovaného typu sestavení vyhledá v libovolném Type sestavení.

Plně zadaný AssemblyName musí mít parametry názvu, jazykové verze, veřejného klíče nebo tokenu veřejného klíče, hlavní verze, podverze, čísla sestavení a čísla revize. Poslední čtyři jsou zabalené v Version typu.

Pokud chcete vytvořit jednoduchý název, vytvořte AssemblyName objekt pomocí konstruktoru bez parametrů a nastavte Name. Ostatní vlastnosti jsou volitelné.

Pokud chcete vytvořit úplný silný název, vytvořte AssemblyName objekt pomocí konstruktoru bez parametrů a nastavte Name a KeyPair. Ostatní vlastnosti jsou volitelné. Použijte SetPublicKey a SetPublicKeyToken k nastavení veřejného klíče a silného názvu. Podepisování silného názvu vždy používá hashovací SHA1 algoritmus.

Pokud chcete zajistit správné vytvoření názvů, použijte následující vlastnosti:

Název můžete získat také pomocí /l možnosti sGacutil.exe (Global Assembly Cache Tool).

Pro částečně zadaný silný název vytvořte AssemblyName objekt pomocí konstruktoru bez parametrů a nastavte název a veřejný klíč. Sestavení vytvořené pomocí takového objektu AssemblyName lze později podepsat pomocí linkeru sestavení (Al.exe).

Je možné zadat veřejný klíč a KeyPair klíč s nekonzistentními hodnotami. To může být užitečné ve scénářích pro vývojáře. V tomto případě veřejný klíč načtený pomocí GetPublicKey určuje správný veřejný klíč, zatímco KeyPair určuje veřejný a privátní klíč použitý během vývoje. Když modul runtime zjistí neshodu KeyPair mezi veřejným klíčem a veřejným klíčem, vyhledá v registru správný klíč, který odpovídá veřejnému klíči.

Formát zobrazovaného názvu AssemblyName je řetězec Unicode oddělený čárkami, který začíná tímto názvem:

Name <,Culture = CultureInfo> <,Version = Major.Minor.Build.Revision> <, StrongName> <,PublicKeyToken> '\0'

Name je textový název sestavení. CultureInfo je jazyková verze definovaná RFC1766 formátu. MajorBuild, Minora Revision jsou hlavní verze, podverze, číslo sestavení a číslo revize sestavení. StrongName je šestnáctková hodnota 64 bitů hodnoty hash veřejného klíče vygenerovaného pomocí algoritmu hash SHA-1 a veřejného klíče určeného nástrojem SetPublicKey. PublicKeyToken je hexadecimální veřejný klíč zakódovaný pomocí SetPublicKey.

Hexadecimální kódování je definováno jako převod každého bajtu binárního objektu na dva šestnáctkové znaky, které postupují od nejmenšího po nejvýznamnější bajt. Další zobrazované hodnoty budou přidány podle potřeby.

Pokud je znám úplný veřejný klíč, pak publicKey může být nahrazen pro StrongName.

Všimněte si také, že s výjimkou Nameparametru , který musí nastat jako první, není důležité lexikální pořadí parametrů. Jakýkoli parametr (Version, StrongNameCulturenebo PublicKey) není výslovně nastaven, se však považuje za vynechaný a AssemblyName pak se považuje za částečný. Při zadávání částečných informací musí být parametry názvu zadány ve výše uvedeném pořadí.

Při zadání zobrazovaného názvu se konvence StrongName =null nebo PublicKey= null označuje, že se vyžaduje vazba a shoda s jednoduše pojmenovaným sestavením. Konvence Culture= "" (dvojitá uvozovka představující prázdný řetězec) navíc označuje shodu s výchozí jazykovou verzí.

Následující příklad ukazuje pro AssemblyName jednoduše pojmenované sestavení s výchozí jazykovou verzí.

ExampleAssembly, Culture=""

Následující příklad ukazuje plně zadaný odkaz na sestavení se silným názvem s jazykovou verzí "en".

ExampleAssembly, Version=1.0.0.0, Culture=en, PublicKeyToken=a5d015c7d5a0b012

Konstruktory

AssemblyName()

Inicializuje novou instanci AssemblyName třídy.

AssemblyName(String)

Inicializuje novou instanci AssemblyName třídy se zadaným zobrazovaným názvem.

Vlastnosti

CodeBase
Zastaralé.

Získá nebo nastaví umístění sestavení jako adresu URL.

ContentType

Získá nebo nastaví hodnotu, která označuje, jaký typ obsahu sestavení obsahuje.

CultureInfo

Získá nebo nastaví jazykovou verzi podporovanou sestavením.

CultureName

Získá nebo nastaví název jazykové verze přidružené k sestavení.

EscapedCodeBase
Zastaralé.

Získá identifikátor URI, včetně řídicích znaků, který představuje základ kódu.

Flags

Získá nebo nastaví atributy sestavení.

FullName

Získá úplný název sestavení, označovaný také jako zobrazovaný název.

HashAlgorithm
Zastaralé.

Získá nebo nastaví algoritmus hash používaný manifestem sestavení.

KeyPair
Zastaralé.

Získá nebo nastaví veřejný a privátní kryptografický klíč pár, který se používá k vytvoření silného názvu podpis pro sestavení.

Name

Získá nebo nastaví jednoduchý název sestavení. To je obvykle, ale ne nutně, název souboru manifestu sestavení, minus jeho příponu.

ProcessorArchitecture
Zastaralé.

Získá nebo nastaví hodnotu, která identifikuje procesor a bity za slovo platformy, na kterou cílí spustitelný soubor.

Version

Získá nebo nastaví čísla hlavního, vedlejšího, sestavení a revize sestavení sestavení.

VersionCompatibility
Zastaralé.

Získá nebo nastaví informace související s kompatibilitou sestavení s jinými sestaveními.

Metody

Clone()

Vytvoří kopii tohoto AssemblyName objektu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetAssemblyName(String)

Získá hodnotu AssemblyName pro daný soubor.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)
Zastaralé.

Získá informace o serializaci se všemi daty potřebnými k opětovnému vytvoření instance tohoto AssemblyNameobjektu .

GetPublicKey()

Získá veřejný klíč sestavení.

GetPublicKeyToken()

Získá token veřejného klíče, což je posledních 8 bajtů hodnoty hash SHA-1 veřejného klíče, pod kterým je aplikace nebo sestavení podepsána.

GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnDeserialization(Object)

Implementuje ISerializable rozhraní a je volána zpět událostí deserializace po dokončení deserializace.

ReferenceMatchesDefinition(AssemblyName, AssemblyName)

Vrátí hodnotu označující, zda jsou dva názvy sestavení stejné. Porovnání je založeno na jednoduchých názvech sestavení.

SetPublicKey(Byte[])

Nastaví veřejný klíč identifikující sestavení.

SetPublicKeyToken(Byte[])

Nastaví token veřejného klíče, což je posledních 8 bajtů hodnoty hash SHA-1 veřejného klíče, pod kterým je aplikace nebo sestavení podepsána.

ToString()

Vrátí úplný název sestavení, označovaný také jako zobrazovaný název.

Explicitní implementace rozhraní

_AssemblyName.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

_AssemblyName.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

_AssemblyName.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

_AssemblyName.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

Platí pro

Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Viz také