Version Класс

Определение

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

public ref class Version sealed : IComparable, IComparable<Version ^>, IEquatable<Version ^>
public ref class Version sealed : ICloneable, IComparable, IComparable<Version ^>, IEquatable<Version ^>
public ref class Version sealed : ICloneable, IComparable, IComparable<Version ^>, IEquatable<Version ^>, ISpanFormattable
public ref class Version sealed : ICloneable, IComparable
public sealed class Version : IComparable, IComparable<Version>, IEquatable<Version>
public sealed class Version : ICloneable, IComparable, IComparable<Version>, IEquatable<Version>
public sealed class Version : ICloneable, IComparable, IComparable<Version>, IEquatable<Version>, ISpanFormattable
[System.Serializable]
public sealed class Version : ICloneable, IComparable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Version : ICloneable, IComparable, IComparable<Version>, IEquatable<Version>
type Version = class
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
type Version = class
    interface ICloneable
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
type Version = class
    interface ICloneable
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
    interface ISpanFormattable
    interface IFormattable
type Version = class
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
    interface ICloneable
[<System.Serializable>]
type Version = class
    interface ICloneable
    interface IComparable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Version = class
    interface ICloneable
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
Public NotInheritable Class Version
Implements IComparable, IComparable(Of Version), IEquatable(Of Version)
Public NotInheritable Class Version
Implements ICloneable, IComparable, IComparable(Of Version), IEquatable(Of Version)
Public NotInheritable Class Version
Implements ICloneable, IComparable, IComparable(Of Version), IEquatable(Of Version), ISpanFormattable
Public NotInheritable Class Version
Implements ICloneable, IComparable
Наследование
Version
Атрибуты
Реализации

Примеры

В следующем примере атрибут используется 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.

Комментарии

Номера версий состоят из двух и четырех компонентов: основной, дополнительный, сборка и редакция. Основной и дополнительный компоненты являются обязательными; компоненты сборки и редакции необязательны, но компонент сборки является обязательным, если определен компонент редакции. Все определенные компоненты должны быть целыми числами больше или равными 0. Формат номера версии выглядит следующим образом (дополнительные компоненты показаны в квадратных скобках ([и]):

основной. дополнительный[.Сборка[.Редакция]]

Эти компоненты используются в соответствии со следующим соглашением:

  • Основные: сборки с одинаковыми именами, но разными основными версиями не взаимозаменяемы. Более высокий номер версии может указывать на значительную перезапись продукта, в которой невозможно предположить обратную совместимость.

  • Дополнительный: Если имя и основной номер версии в двух сборках совпадают, но дополнительный номер версии отличается, это указывает на значительное улучшение с намерением обратной совместимости. Этот больший дополнительный номер версии может указывать на выпуск точки продукта или полностью обратно совместимую версию продукта.

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

  • Редакция. сборки с одинаковыми именами, основными и дополнительными номерами версий, но разными редакциями, должны быть полностью взаимозаменяемыми. Более высокий номер редакции может использоваться в сборке, которая устраняет брешь в системе безопасности в ранее выпущенной сборке.

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

Важно!

Значение Version свойств, которым не было явно назначено значение, не определено (-1).

начиная с платформа .NET Framework 2,0, MajorRevision свойства и MinorRevision позволяют задать временную версию приложения, которая, например, устраняет проблему, пока не будет выпущено постоянное решение. кроме того, операционная система Windows NT использует MajorRevision свойство для кодирования номера пакета обновления.

Назначение сведений о версии сборкам

Обычно Version класс не используется для присвоения номера версии сборке. Вместо этого AssemblyVersionAttribute класс используется для определения версии сборки, как показано в примере в этом разделе.

Получение сведений о версии

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

  • Получение версии операционной системы. В следующем примере свойство используется OperatingSystem.Version для получения номера версии операционной системы.

    // Get the operating system version.
    OperatingSystem os = Environment.OSVersion;
    Version ver = os.Version;
    Console.WriteLine("Operating System: {0} ({1})", os.VersionString, ver.ToString());
    
    ' Get the operating system version.
    Dim os As OperatingSystem = Environment.OSVersion
    Dim ver As Version = os.Version
    Console.WriteLine("Operating System: {0} ({1})", os.VersionString, ver.ToString())
    
  • Получение версии среды CLR. В следующем примере свойство используется Environment.Version для получения сведений о версии среды CLR.

    // Get the common language runtime version.
    Version ver = Environment.Version;
    Console.WriteLine("CLR Version {0}", ver.ToString());
    
    ' Get the common language runtime version.
    Dim ver As Version = Environment.Version
    Console.WriteLine("CLR Version {0}", ver.ToString())
    
  • Получение версии сборки текущего приложения. В следующем примере метод используется Assembly.GetEntryAssembly для получения ссылки на Assembly объект, представляющий исполняемый файл приложения, а затем извлекает его номер версии сборки.

    using System;
    using System.Reflection;
    
    public class Example
    {
       public static void Main()
       {
          // Get the version of the executing assembly (that is, this assembly).
          Assembly assem = Assembly.GetEntryAssembly();
          AssemblyName assemName = assem.GetName();
          Version ver = assemName.Version;
          Console.WriteLine("Application {0}, Version {1}", assemName.Name, ver.ToString());
       }
    }
    
    Imports System.Reflection
    
    Module Example
       Public Sub Main()
          ' Get the version of the executing assembly (that is, this assembly).
          Dim assem As Assembly = Assembly.GetEntryAssembly()
          Dim assemName As AssemblyName = assem.GetName()
          Dim ver As Version = assemName.Version
          Console.WriteLine("Application {0}, Version {1}", assemName.Name, ver.ToString())
       End Sub
    End Module
    
  • Получение версии сборки текущей сборки. В следующем примере свойство используется Type.Assembly для получения ссылки на Assembly объект, представляющий сборку, содержащую точку входа приложения, а затем извлекает сведения о его версии.

    using System;
    using System.Reflection;
    
    public class Example
    {
       public static void Main()
       {
          // Get the version of the current assembly.
          Assembly assem = typeof(Example).Assembly;
          AssemblyName assemName = assem.GetName();
          Version ver = assemName.Version;
          Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString());
       }
    }
    
    Imports System.Reflection
    
    Module Example
       Public Sub Main()
          ' Get the version of the current assembly.
          Dim assem As Assembly = GetType(Example).Assembly
          Dim assemName As AssemblyName = assem.GetName()
          Dim ver As Version = assemName.Version
          Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString())            VB
       End Sub
    End Module
    
  • Получение версии определенной сборки. В следующем примере метод используется Assembly.ReflectionOnlyLoadFrom для получения ссылки на Assembly объект с определенным именем файла, а затем извлекает сведения о его версии. Обратите внимание, что для создания Assembly объекта по имени файла или по строгому имени также существует несколько других методов.

    using System;
    using System.Reflection;
    
    public class Example
    {
       public static void Main()
       {
          // Get the version of a specific assembly.
          string filename = @".\StringLibrary.dll";
          Assembly assem = Assembly.ReflectionOnlyLoadFrom(filename);
          AssemblyName assemName = assem.GetName();
          Version ver = assemName.Version;
          Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString());
       }
    }
    
    Imports System.Reflection
    
    Module Example
       Public Sub Main()
          ' Get the version of a specific assembly.
          Dim filename As String = ".\StringLibrary.dll"
          Dim assem As Assembly = Assembly.ReflectionOnlyLoadFrom(filename)
          Dim assemName As AssemblyName = assem.GetName()
          Dim ver As Version = assemName.Version
          Console.WriteLine("{0}, Version {1}", assemName.Name, ver.ToString())
       End Sub
    End Module
    
  • получение версии публикации ClickOnce приложения. В следующем примере свойство используется ApplicationDeployment.CurrentVersion для вывода версии публикации приложения. Обратите внимание, что для успешного выполнения требуется задать удостоверение приложения в примере. это автоматически обрабатывается мастером Visual Studioной публикации.

    using System;
    using System.Deployment.Application;
    
    public class Example
    {
       public static void Main()
       {
          Version ver = ApplicationDeployment.CurrentDeployment.CurrentVersion;
          Console.WriteLine("ClickOnce Publish Version: {0}", ver);
       }
    }
    
    Imports System.Deployment.Application
    
    Module Example
       Public Sub Main()
          Dim ver As Version = ApplicationDeployment.CurrentDeployment.CurrentVersion
          Console.WriteLine("ClickOnce Publish Version: {0}", ver)
       End Sub
    End Module
    

    Важно!

    версия публикации приложения для ClickOnce развертывания полностью независима от его версии сборки.

Сравнение объектов версии

С помощью метода можно CompareTo определить, является ли один Version объект более ранним, чем второй, или более поздним Version . В следующем примере указывается, что версия 2,1 более поздняя, чем версия 2,0.

Version v1 = new Version(2, 0);
Version v2 = new Version("2.1");
Console.Write("Version {0} is ", v1);
switch(v1.CompareTo(v2))
{
   case 0:
      Console.Write("the same as");
      break;
   case 1:
      Console.Write("later than");
      break;
   case -1:
      Console.Write("earlier than");
      break;
}
Console.WriteLine(" Version {0}.", v2);                  
// The example displays the following output:
//       Version 2.0 is earlier than Version 2.1.
Dim v1 As New Version(2,0)
Dim v2 As New Version("2.1")
Console.Write("Version {0} is ", v1)
Select Case v1.CompareTo(v2)
   Case 0
      Console.Write("the same as")
   Case 1
      Console.Write("later than")
   Case -1
      Console.Write("earlier than")
End Select
Console.WriteLine(" Version {0}.", v2)                  
' The example displays the following output:
'       Version 2.0 is earlier than Version 2.1.

Чтобы две версии были равны, номера основного, дополнительного, сборки и редакции первого Version объекта должны быть идентичны значениям второго Version объекта. Если номер сборки или редакции Version объекта не определен, этот Version объект считается более ранним, чем Version объект, номер сборки или номера редакции которого равен нулю. В следующем примере показано, как сравнить три Version объекта с неопределенными компонентами версии.

using System;

enum VersionTime {Earlier = -1, Same = 0, Later = 1 };

public class Example
{
   public static void Main()
   {
      Version v1 = new Version(1, 1);
      Version v1a = new Version("1.1.0");
      ShowRelationship(v1, v1a);
      
      Version v1b = new Version(1, 1, 0, 0);
      ShowRelationship(v1b, v1a);
   }

   private static void ShowRelationship(Version v1, Version v2)
   {
      Console.WriteLine("Relationship of {0} to {1}: {2}", 
                        v1, v2, (VersionTime) v1.CompareTo(v2));       
   }
}
// The example displays the following output:
//       Relationship of 1.1 to 1.1.0: Earlier
//       Relationship of 1.1.0.0 to 1.1.0: Later
Public Enum VersionTime
   Earlier = -1
   Same = 0
   Later = 1
End Enum

Module Example
   Public Sub Main()
      Dim v1 As New Version(1, 1)
      Dim v1a As New Version("1.1.0")
      ShowRelationship(v1, v1a)
      
      Dim v1b As New Version(1, 1, 0, 0)
      ShowRelationship(v1b, v1a)
   End Sub

   Private Sub ShowRelationship(v1 As Version, v2 As Version)
      Console.WriteLine("Relationship of {0} to {1}: {2}", 
                        v1, v2, CType(v1.CompareTo(v2), VersionTime))       
   End Sub
End Module
' The example displays the following output:
'       Relationship of 1.1 to 1.1.0: Earlier
'       Relationship of 1.1.0.0 to 1.1.0: Later

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

Version()

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

Version(Int32, Int32)

Инициализирует новый экземпляр класса Version с помощью указанных основного и дополнительного номеров версии.

Version(Int32, Int32, Int32)

Инициализирует новый экземпляр класса Version с помощью указанных основного и дополнительного номеров версии и номера построения.

Version(Int32, Int32, Int32, Int32)

Инициализирует новый экземпляр класса Version с помощью указанных основного и дополнительного номеров версии, номера построения и номера редакции.

Version(String)

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

Свойства

Build

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

Major

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

MajorRevision

Возвращает старшие 16 разрядов номера редакции.

Minor

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

MinorRevision

Возвращает младшие 16 разрядов номера редакции.

Revision

Возвращает значение компонента текущего объекта Version, представляющего в номере версии номер редакции.

Методы

Clone()

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

CompareTo(Object)

Сравнивает текущий объект Version с заданным объектом и возвращает сведения об их относительных значениях.

CompareTo(Version)

Сравнивает текущий объект Version с заданным объектом Version и возвращает сведения об их относительных значениях.

Equals(Object)

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

Equals(Version)

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

GetHashCode()

Возвращает хэш-код для текущего объекта Version.

GetType()

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

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

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

(Унаследовано от Object)
Parse(ReadOnlySpan<Char>)

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

Parse(String)

Преобразует строковое представление номера версии в эквивалентный объект Version.

ToString()

Преобразует значение текущего объекта Version в эквивалентное ему представление String.

ToString(Int32)

Преобразует значение текущего объекта Version в эквивалентное ему представление String. Заданное количество обозначает число возвращаемых компонент.

TryFormat(Span<Char>, Int32)

Пытается отформатировать этот экземпляр версии в диапазон символов.

TryFormat(Span<Char>, Int32, Int32)

Пытается отформатировать этот экземпляр версии в диапазон символов.

TryParse(ReadOnlySpan<Char>, Version)

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

TryParse(String, Version)

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

Операторы

Equality(Version, Version)

Определение равенства двух заданных объектов Version.

GreaterThan(Version, Version)

Определяет, действительно ли значение первого указанного объекта Version больше значения второго указанного объекта Version.

GreaterThanOrEqual(Version, Version)

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

Inequality(Version, Version)

Определение неравенства двух заданных объектов Version.

LessThan(Version, Version)

Определяет, меньше ли значение первого указанного объекта Version, чем значение второго указанного объекта Version.

LessThanOrEqual(Version, Version)

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

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

IComparable.CompareTo(Object)

Сравнивает текущий объект Version с заданным объектом и возвращает сведения об их относительных значениях.

IFormattable.ToString(String, IFormatProvider)

Форматирует значение текущего экземпляра, используя указанный формат.

ISpanFormattable.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

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

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