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) |
Устаревшие..
Получает сведения о сериализации со всеми данными, необходимыми для повторного создания экземпляра этого |
| 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) |
Предоставляет доступ к свойствам и методам, предоставляемым объектом. |