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 .
Замечание
Проверка версий выполняется только со сборками с сильным именем.
Номер версии состоит из четырех частей:
<основная версия>.<дополнительная версия>.<номер сборки>.<пересмотр>
Это важно
Все компоненты версии должны быть целыми числами, превышающими или равными 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 , указывающего звездочку:
- Делает выходные данные сборки не воспроизводимыми (см. воспроизводимые сборки). Если свойство
trueсборки проекта присваиваетсяDeterministicошибкеCS8357компилятором. - Может снизить производительность сборки, так как она предотвращает кэширование выходных данных компилятора.
- Несовместима с функциями редактирования и продолжения игорячей перезагрузки .
Некоторые из этих проблем можно устранить, ограничив использование версий на основе времени для выпуска сборок с помощью условной компиляции, например:
#if DEBUG
[assembly: AssemblyVersion("1.0.0.0")]
#else
[assembly: AssemblyVersion("1.0.*")]
#endif
Лучший подход к настройке версий заключается в том, чтобы наследовать сборку или версию файла из HEAD фиксации SHA (для репозиториев 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) |