AssemblyVersionAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает версию сборки, которой присваиваются атрибуты.
public ref class AssemblyVersionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyVersionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
type AssemblyVersionAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type AssemblyVersionAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyVersionAttribute = class
inherit Attribute
Public NotInheritable Class AssemblyVersionAttribute
Inherits Attribute
- Наследование
- Атрибуты
Примеры
В следующем примере атрибут используется AssemblyVersionAttribute для назначения номера версии сборке. Во время компиляции эти сведения о версии хранятся вместе с метаданными сборки. Во время выполнения этот пример извлекает значение Type.Assembly свойства для типа, найденного в сборке, чтобы получить ссылку на выполняющуюся сборку, и извлекает сведения о версии сборки из Version свойства объекта, возвращаемого AssemblyName методом Assembly.GetName .
using System;
using System.Reflection;
[assembly:AssemblyVersionAttribute("2.0.1")]
public class Example1
{
public static void Main()
{
Assembly thisAssem = typeof(Example1).Assembly;
AssemblyName thisAssemName = thisAssem.GetName();
Version ver = thisAssemName.Version;
Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name);
}
}
// The example displays the following output:
// This is version 2.0.1.0 of Example1.
Imports System.Reflection
<Assembly:AssemblyVersionAttribute("2.0.1")>
Module Example1
Public Sub Main()
Dim thisAssem As Assembly = GetType(Example1).Assembly
Dim thisAssemName As AssemblyName = thisAssem.GetName()
Dim ver As Version = thisAssemName.Version
Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name)
End Sub
End Module
' The example displays the following output:
' This is version 2.0.1.0 of Example1.
Комментарии
Атрибут AssemblyVersionAttribute используется для назначения номера версии сборке. Затем этот номер версии сохраняется вместе с метаданными сборки.
Номер версии сборки является частью удостоверения сборки и играет ключевую роль в привязке к сборке и в политике версий. Политика управления версиями по умолчанию для среды выполнения заключается в том, что приложения могут выполняться только с версиями, с которыми они были разработаны и протестированы, если иное не переопределено явной политикой использования версий в файлах конфигурации (в файле конфигурации приложения, файле политики издателя и файле конфигурации администратора компьютера). Дополнительные сведения см. в разделе Сборки в .NET .
Примечание
Проверка версий производится только для сборок со строгими именами.
Номер версии состоит из четырех частей:
<основная версия>.<дополнительный номер версии>.<номер сборки>.<Revision>
Важно!
Все компоненты версии должны быть целыми числами, превышающими 0 или равными 0. Метаданные ограничивают основной, дополнительный компонент, компоненты сборки и редакции для сборки максимальным значением UInt16.MaxValue - 1. Если компонент превышает это значение, возникает ошибка компиляции.
Например, [assembly:AssemblyVersion("2.3.25.1")]
указывает 2 как основную версию, 3 — дополнительный номер версии, 25 — номер сборки и 1 — номер редакции.
Атрибут AssemblyVersionAttribute позволяет указать звездочку (*) вместо номера сборки или редакции. Номер версии, [assembly:AssemblyVersion("1.2.*")]
например , указывает 1 в качестве основной версии и 2 в качестве дополнительной версии и принимает номера сборки и редакции по умолчанию. Номер версии, [assembly:AssemblyVersion("1.2.15.*")]
например , указывает 1 в качестве основной версии, 2 в качестве дополнительной версии и 15 в качестве номера сборки и принимает номер редакции по умолчанию. Номер сборки по умолчанию увеличивается ежедневно. Номер редакции по умолчанию — это количество секунд с полуночи по местному времени (без учета корректировки часового пояса для летнего времени), разделенное на 2. Если вы укажете звездочку для номера сборки, вы не сможете указать номер редакции.
Важно!
Использование атрибута AssemblyVersionAttribute , указывающего звездочку:
- Делает выходные данные сборки не воспроизводимыми (см. раздел Воспроизводимые сборки). Если проект присваивает
Deterministic
свойству сборкиtrue
значение , компилятор сообщает об ошибкеCS8357
. - Может снизить производительность сборки, так как это предотвращает кэширование выходных данных компилятора.
- Несовместим с функциями "Изменить & продолжить" и "Горячая перезагрузка".
Некоторые из этих проблем можно устранить, ограничив использование версий на основе времени для выпуска сборок с помощью условной компиляции следующим образом:
#if DEBUG
[assembly: AssemblyVersion("1.0.0.0")]
#else
[assembly: AssemblyVersion("1.0.*")]
#endif
Лучший подход к управления версиями заключается в том, чтобы наследовать версию сборки или файла из SHA фиксации HEAD
(для репозиториев Git). См., например, Nerdbank.GitVersioning.
Основной и дополнительный версии сборки используются в качестве номера версии библиотеки типов при экспорте сборки. Некоторые узлы COM не принимают библиотеки типов с номером версии 0.0. Поэтому, если вы хотите предоставить сборку com-клиентам, явно задайте версию сборки 1.0 AssemblyVersionAttribute
на странице для проектов, созданных за пределами Visual Studio 2005 без AssemblyVersionAttribute
указания. Это можно сделать, даже если версия сборки — 0.0. Все проекты, созданные в Visual Studio 2005, имеют версию сборки по умолчанию 1.0.*.
Чтобы получить имя загруженной сборки, вызовите GetName для сборки , чтобы получить AssemblyName, а затем получите Version свойство . Чтобы получить имя сборки, которую вы не загрузили, вызовите GetAssemblyName из клиентского приложения, чтобы проверка версию сборки, которую использует приложение.
Атрибут AssemblyVersionAttribute можно применить только один раз. Некоторые шаблоны проектов Visual Studio уже содержат атрибут . В этих проектах добавление атрибута в код вызывает ошибку компилятора.
Конструкторы
AssemblyVersionAttribute(String) |
Инициализирует новый экземпляр класса |
Свойства
TypeId |
В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute. (Унаследовано от Attribute) |
Version |
Возвращает номер версии сборки с соответствующими атрибутами. |
Методы
Equals(Object) |
Возвращает значение, показывающее, равен ли экземпляр указанному объекту. (Унаследовано от Attribute) |
GetHashCode() |
Возвращает хэш-код данного экземпляра. (Унаследовано от Attribute) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту. (Унаследовано от Attribute) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса. (Унаследовано от Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Attribute) |