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 ICloneable
    interface IComparable
    interface IComparable<Version>
    interface IEquatable<Version>
    interface IFormattable
    interface ISpanFormattable
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.
open System.Reflection

[<assembly: AssemblyVersionAttribute "2.0.1">]
do ()

type Example1 = class end

let thisAssem = typeof<Example1>.Assembly
let thisAssemName = thisAssem.GetName()
   
let ver = thisAssemName.Version
   
printfn $"This is version {ver} of {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. Формат номера версии выглядит следующим образом (необязательные компоненты отображаются в квадратных скобках ([ и ]):

основной. minor[.build[.редакция]]

Компоненты используются по соглашению следующим образом:

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

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

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

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

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

Важно!

Значение 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.
    let os = Environment.OSVersion
    let ver = os.Version
    printfn $"Operating System: {os.VersionString} ({ver})"
    
    ' 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.
    let ver = Environment.Version
    printfn $"CLR Version {ver}"
    
    ' 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());
       }
    }
    
    open System.Reflection
    
    // Get the version of the executing assembly (that is, this assembly).
    let assem = Assembly.GetEntryAssembly()
    let assemName = assem.GetName()
    let ver = assemName.Version
    printfn $"Application {assemName.Name}, Version {ver}"
    
    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());
       }
    }
    
    type Example = class end
    
    // Get the version of the current assembly.
    let assem = typeof<Example>.Assembly
    let assemName = assem.GetName()
    let ver = assemName.Version
    printfn $"{assemName.Name}, Version {ver}"
    
    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());
       }
    }
    
    open System.Reflection
    
    // Get the version of a specific assembly.
    let filename = @".\StringLibrary.dll"
    let assem = Assembly.ReflectionOnlyLoadFrom filename
    let assemName = assem.GetName()
    let ver = assemName.Version
    printfn $"{assemName.Name}, Version {ver}"
    
    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.
open System

let v1 = Version(2, 0)
let v2 = Version "2.1"

printf $"Version {v1} is "

match v1.CompareTo v2 with
| 0 -> printf "the same as"
| 1 -> printf "later than"
| _ -> printf "earlier than"

printf $" Version {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
open System

type VersionTime =
    | Earlier = -1
    | Same = 0
    | Later = 1

let showRelationship (v1: Version) (v2: Version) =
    printfn $"Relationship of {v1} to {v2}: {v1.CompareTo v2 |> enum<VersionTime>}" 

let v1 = Version(1, 1)
let v1a = Version "1.1.0"
showRelationship v1 v1a

let v1b = Version(1, 1, 0, 0)
showRelationship v1b v1a

// 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)

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

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