AssemblyName Класс

Определение

Описывает уникальное удостоверение сборки в полном объеме.

public ref class AssemblyName sealed
public ref class AssemblyName sealed : ICloneable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public ref class AssemblyName sealed : ICloneable, System::Runtime::InteropServices::_AssemblyName, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
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
type AssemblyName = class
type AssemblyName = class
    interface ICloneable
    interface IDeserializationCallback
    interface ISerializable
type AssemblyName = class
    interface ICloneable
    interface ISerializable
    interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type AssemblyName = class
    interface _AssemblyName
    interface ICloneable
    interface ISerializable
    interface IDeserializationCallback
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyName = class
    interface _AssemblyName
    interface ICloneable
    interface ISerializable
    interface IDeserializationCallback
Public NotInheritable Class AssemblyName
Public NotInheritable Class AssemblyName
Implements ICloneable, IDeserializationCallback, ISerializable
Public NotInheritable Class AssemblyName
Implements _AssemblyName, ICloneable, IDeserializationCallback, ISerializable
Наследование
AssemblyName
Атрибуты
Реализации

Примеры

В этом примере показано, как использовать различные классы отражения для анализа метаданных, содержащихся в сборке.

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
Imports System.Reflection

Module Module1
    Sub Main()
        ' This variable holds the amount of indenting that 
        ' should be used when displaying each line of information.
        Dim indent As Int32 = 0
        ' Display information about the EXE assembly.
        Dim a As Assembly = GetType(Module1).Assembly
        Display(indent, "Assembly identity={0}", a.FullName)
        Display(indent + 1, "Codebase={0}", a.CodeBase)

        ' Display the set of assemblies our assemblies reference.
        Dim an As AssemblyName
        Display(indent, "Referenced assemblies:")
        For Each 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))
        Next
        Display(indent, "")

        ' Display information about each assembly loading into this AppDomain.
        For Each a In AppDomain.CurrentDomain.GetAssemblies()
            Display(indent, "Assembly: {0}", a)

            ' Display information about each module of this assembly.
            Dim m As [Module]
            For Each m In a.GetModules(True)
                Display(indent + 1, "Module: {0}", m.Name)
            Next

            ' Display information about each type exported from this assembly.
            Dim t As Type
            indent += 1
            For Each t In a.GetExportedTypes()
                Display(0, "")
                Display(indent, "Type: {0}", t)

                ' For each type, show its members & their custom attributes.
                Dim mi As MemberInfo
                indent += 1
                For Each mi In t.GetMembers()
                    Display(indent, "Member: {0}", mi.Name)
                    DisplayAttributes(indent, mi)

                    ' If the member is a method, display information about its parameters.
                    Dim pi As ParameterInfo
                    If mi.MemberType = MemberTypes.Method Then
                        For Each pi In CType(mi, MethodInfo).GetParameters()
                            Display(indent + 1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name)
                        Next
                    End If

                    ' If the member is a property, display information about the property's accessor methods.
                    If mi.MemberType = MemberTypes.Property Then
                        Dim am As MethodInfo
                        For Each am In CType(mi, PropertyInfo).GetAccessors()
                            Display(indent + 1, "Accessor method: {0}", am)
                        Next
                    End If
                Next
                indent -= 1
            Next
            indent -= 1
        Next
    End Sub

    ' Displays the custom attributes applied to the specified member.
    Sub DisplayAttributes(ByVal indent As Int32, ByVal mi As MemberInfo)
        ' Get the set of custom attributes; if none exist, just return.
        Dim attrs() As Object = mi.GetCustomAttributes(False)
        If attrs.Length = 0 Then Return

        ' Display the custom attributes applied to this member.
        Display(indent + 1, "Attributes:")
        Dim o As Object
        For Each o In attrs
            Display(indent + 2, "{0}", o.ToString())
        Next
    End Sub

    ' Display a formatted string indented by the specified amount.
    Sub Display(ByVal indent As Int32, ByVal format As String, ByVal ParamArray params() As Object)
        Console.Write(New String(" "c, indent * 2))
        Console.WriteLine(format, params)
    End Sub
End Module

'The output shown below is abbreviated.
'
'Assembly identity=Reflection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
'  Codebase=file:///C:/Reflection.exe
'Referenced assemblies:
'  Name=mscorlib, Version=1.0.5000.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
'  Name=Microsoft.VisualBasic, Version=7.0.5000.0, Culture=, PublicKey token=B0-3F-5F-7F-11-D5-0A-3A
'
'Assembly: mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
'  Module: mscorlib.dll
'  Module: prc.nlp
'  Module: prcp.nlp
'  Module: ksc.nlp
'  Module: ctype.nlp
'  Module: xjis.nlp
'  Module: bopomofo.nlp
'  Module: culture.nlp
'  Module: region.nlp
'  Module: sortkey.nlp
'  Module: charinfo.nlp
'  Module: big5.nlp
'  Module: sorttbls.nlp
'  Module: l_intl.nlp
'  Module: l_except.nlp
'
'  Type: System.Object
'    Member: GetHashCode
'    Member: Equals
'      Parameter: Type=System.Object, Name=obj
'    Member: ToString
'    Member: Equals
'      Parameter: Type=System.Object, Name=objA
'      Parameter: Type=System.Object, Name=objB
'    Member: ReferenceEquals
'      Parameter: Type=System.Object, Name=objA
'      Parameter: Type=System.Object, Name=objB
'    Member: GetType
'    Member: .ctor
'
'  Type: System.ICloneable
'    Member: Clone
'
'  Type: System.Collections.IEnumerable
'    Member: GetEnumerator
'      Attributes:
'        System.Runtime.InteropServices.DispIdAttribute
'
'  Type: System.Collections.ICollection
'    Member: get_IsSynchronized
'    Member: get_SyncRoot
'    Member: get_Count
'    Member: CopyTo
'      Parameter: Type=System.Array, Name=array
'      Parameter: Type=System.Int32, Name=index
'    Member: Count
'      Accessor method: Int32 get_Count()
'    Member: SyncRoot
'      Accessor method: System.Object get_SyncRoot()
'    Member: IsSynchronized
'      Accessor method: Boolean get_IsSynchronized()
'

Комментарии

Объект AssemblyName содержит сведения о сборке, которую можно использовать для привязки к этой сборке. Удостоверение сборки состоит из следующих элементов:

  • Простое имя.
  • Номер версии.
  • Пара криптографических ключей.
  • Поддерживаемые язык и региональные параметры.

Обычно это простое имя файла манифеста без расширения. Пара ключей включает открытый и закрытый ключ, используемый для создания подписей строгого имени для сборок.

Все компиляторы, поддерживающие среду CLR, будут выдавать простое имя вложенного класса, а отражение создает имя, которое выполняется при запросе, в соответствии со следующими соглашениями.

Разделитель Значение
Обратная косая черта (\) Escape-символ.
Запятая (,) Предшествует имени сборки.
Знак плюса (+) Перед вложенным классом.

Например, полное имя класса может выглядеть следующим образом:

ContainingClass+NestedClass,MyAssembly

Значение "++" становится "\+\+", а "\" становится "\\".

Это полное имя можно сохранить и позже использовать для загрузки Type. Для поиска и загрузки используйте TypeGetType только имя типа или с полным именем сборки. GetType с именем типа будет искать Type только сборку вызывающего объекта, а затем в системной сборке. GetType с именем квалифицированного типа сборки будет искать в любой сборке Type .

Полное имя AssemblyName , язык и региональные параметры, открытый ключ или маркер открытого ключа, основная версия, дополнительная версия, номер сборки и параметры номера редакции. Последние четыре упаковываются в Version тип.

Чтобы создать простое AssemblyName имя, создайте объект с помощью конструктора без параметров и задайте его Name. Другие свойства являются необязательными.

Чтобы создать полное строгое имя, создайте AssemblyName объект с помощью конструктора без параметров и задайте и NameKeyPair. Другие свойства являются необязательными. Используйте SetPublicKey и SetPublicKeyToken задайте открытый ключ и строгое имя. Подписывание строгого SHA1 имени всегда использует хэш-алгоритм.

Чтобы убедиться, что имена созданы правильно, используйте следующие свойства:

Вы также можете получить имя с помощью /l параметра Gacutil.exe (средство глобального кэша сборок).

Для частично указанного строгого имени создайте AssemblyName объект с помощью конструктора без параметров и задайте имя и открытый ключ. Сборка, созданная с помощью такого AssemblyName объекта, может быть подписана позже с помощью компоновщика сборок (Al.exe).

Можно указать открытый ключ и KeyPair несогласованные значения. Это может быть полезно в сценариях разработчика. В этом случае открытый ключ, полученный с GetPublicKey указанием правильного открытого ключа, а KeyPair также указывает открытые и закрытые ключи, используемые во время разработки. Когда среда выполнения обнаруживает несоответствие между KeyPair открытым ключом и открытым ключом, он ищет в реестре правильный ключ, соответствующий открытому ключу.

Формат отображаемого имени AssemblyName — это строка Юникода с разделителями-запятыми, начинающаяся с имени, как показано ниже.

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

Name — текстовое имя сборки. CultureInfo — это язык и региональные параметры, определенные в формате RFC1766. Major, Minor, Buildи Revision являются основной версией, дополнительными версиями, номером сборки и номером редакции сборки. StrongName — шестнадцатеричное закодированное низкоупорядоченное 64 бит хэша открытого ключа, созданного с помощью алгоритма хэширования SHA-1 и открытого ключа, указанного в SetPublicKeyнем. PublicKeyToken — это шестнадцатеричный открытый ключ, заданный в SetPublicKeyформате .

Шестнадцатеричное кодирование определяется как преобразование каждого байта двоичного объекта в два шестнадцатеричных символа, прогрессируя от наименьшего до наиболее значительного байта. Дополнительные значения отображения будут добавлены по мере необходимости.

Если известен полный открытый ключ, то PublicKey может быть заменен на StrongName.

Кроме того, обратите внимание, что за исключением Nameтого, что первое должно быть первым, лексический порядок параметров не имеет значения. Однако любой параметр (Versionили CultureStrongNamePublicKey) не задан специально, считается опущенным, а AssemblyName затем считается частичным. При указании частичной информации параметры имени должны быть указаны в указанном выше порядке.

При предоставлении отображаемого имени соглашение StrongName =null или PublicKey= null указывает, что привязка и сопоставление с просто именованной сборкой требуется. Кроме того, соглашение Culture= "" (двойная кавычка, представляющая пустую строку), указывает сопоставление с языком и региональными параметрами по умолчанию.

В следующем примере показана AssemblyName просто именованной сборка с языком и региональными параметрами по умолчанию.

ExampleAssembly, Culture=""

В следующем примере показана полная ссылка на строго именованную сборку с культурой "en".

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

Конструкторы

Имя Описание
AssemblyName()

Инициализирует новый экземпляр класса AssemblyName.

AssemblyName(String)

Инициализирует новый экземпляр AssemblyName класса с указанным отображаемого имени.

Свойства

Имя Описание
CodeBase
Устаревшие..

Возвращает или задает расположение сборки в качестве URL-адреса.

ContentType

Возвращает или задает значение, указывающее, какой тип содержимого содержит сборка.

CultureInfo

Возвращает или задает язык и региональные параметры, поддерживаемые сборкой.

CultureName

Возвращает или задает имя языка и региональных параметров, связанных с сборкой.

EscapedCodeBase
Устаревшие..

Получает универсальный код ресурса (URI), включая escape-символы, представляющий базу кода.

Flags

Возвращает или задает атрибуты сборки.

FullName

Возвращает полное имя сборки, также известное как отображаемое имя.

HashAlgorithm
Устаревшие..

Возвращает или задает хэш-алгоритм, используемый манифестом сборки.

KeyPair
Устаревшие..

Возвращает или задает пару открытого и закрытого криптографических ключей, которая используется для создания подписи строгого имени для сборки.

Name

Возвращает или задает простое имя сборки. Это обычно, но не обязательно имя файла манифеста сборки, минус его расширение.

ProcessorArchitecture
Устаревшие..

Возвращает или задает значение, определяющее процессор и биты на слово платформы, целевой исполняемым файлом.

Version

Возвращает или задает основные, незначительные, сборки и номера редакции сборки.

VersionCompatibility
Устаревшие..

Возвращает или задает сведения, связанные с совместимостью сборки с другими сборками.

Методы

Имя Описание
Clone()

Делает копию этого AssemblyName объекта.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAssemblyName(String)

Возвращает заданный AssemblyName файл.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetObjectData(SerializationInfo, StreamingContext)
Устаревшие..

Получает сведения о сериализации со всеми данными, необходимыми для повторного создания экземпляра этого AssemblyNameобъекта.

GetPublicKey()

Возвращает открытый ключ сборки.

GetPublicKeyToken()

Возвращает маркер открытого ключа, который является последним 8 байтом хэша SHA-1 открытого ключа, под которым подписано приложение или сборка.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnDeserialization(Object)

ISerializable Реализует интерфейс и вызывается событием десериализации при завершении десериализации.

ReferenceMatchesDefinition(AssemblyName, AssemblyName)

Возвращает значение, указывающее, совпадают ли имена двух сборок. Сравнение основано на простых именах сборок.

SetPublicKey(Byte[])

Задает открытый ключ, определяющий сборку.

SetPublicKeyToken(Byte[])

Задает маркер открытого ключа, который является последним 8 байтом хэша SHA-1 открытого ключа, под которым подписано приложение или сборка.

ToString()

Возвращает полное имя сборки, также известное как отображаемое имя.

Явные реализации интерфейса

Имя Описание
_AssemblyName.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

_AssemblyName.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса.

_AssemblyName.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

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

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

Применяется к

См. также раздел