Version クラス

定義

アセンブリ、オペレーティング システム、または共通言語ランタイムのバージョン番号を表します。 このクラスは継承できません。

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.

注釈

バージョン番号は、メジャー、マイナー、ビルド、リビジョンの 2 ~ 4 つのコンポーネントで構成されます。 主要コンポーネントとマイナー コンポーネントが必要です。ビルド コンポーネントとリビジョン コンポーネントは省略可能ですが、リビジョン コンポーネントが定義されている場合はビルド コンポーネントが必要です。 定義されているすべてのコンポーネントは、0 以上の整数である必要があります。 バージョン番号の形式は次のとおりです (省略可能なコンポーネントは角かっこ ([ と ]) で示されています)。

majorminor[.build[.revision]]

コンポーネントは、規則によって次のように使用されます。

  • メジャー: 同じ名前でメジャー バージョンが異なるアセンブリは交換可能ではありません。 バージョン番号が大きいほど、下位互換性を想定できない製品の大幅な書き換えを示している可能性があります。

  • マイナー: 2 つのアセンブリの名前とメジャー バージョン番号が同じであるが、マイナー バージョン番号が異なる場合、下位互換性を目的とした大幅な機能強化を示します。 このマイナー バージョン番号が大きいほど、製品のポイント リリースまたは完全に下位互換性のある製品の新しいバージョンが示される場合があります。

  • ビルド: ビルド番号の違いは、同じソースの再コンパイルを表します。 プロセッサ、プラットフォーム、またはコンパイラが変更されたときに、異なるビルド番号が使用される場合があります。

  • リビジョン: 同じ名前、メジャー、およびマイナー バージョン番号を持つが、リビジョンが異なるアセンブリは、完全に交換可能であることを意図しています。 以前にリリースされたアセンブリのセキュリティ ホールを修正するビルドでは、より大きなリビジョン番号が使用される場合があります。

ビルド番号またはリビジョン番号によってのみ異なるアセンブリの後続のバージョンは、以前のバージョンの修正プログラムの更新プログラムと見なされます。

重要

値が明示的に割り当てられていないプロパティの Version 値は未定義です (-1)。

.NET Framework 2.0 以降では、MajorRevisionプロパティをMinorRevision使用してアプリケーションの一時的なバージョンを識別できます。たとえば、永続的なソリューションをリリースできるようになるまで問題を修正します。 さらに、Windows NT オペレーティング システムでは、プロパティをMajorRevision使用してサービス パック番号をエンコードします。

アセンブリへのバージョン情報の割り当て

通常、 Version クラスはアセンブリにバージョン番号を割り当てるために使用されません。 代わりに、このトピックの AssemblyVersionAttribute 例に示すように、クラスを使用してアセンブリのバージョンを定義します。

バージョン情報の取得

Version オブジェクトは、一部のシステムまたはアプリケーション コンポーネント (オペレーティング システムなど)、共通言語ランタイム、現在のアプリケーションの実行可能ファイル、または特定のアセンブリに関するバージョン情報を格納するために最もよく使用されます。 次の例は、最も一般的なシナリオの一部を示しています。

  • オペレーティング システムのバージョンを取得しています。 次の例では、プロパティを 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())
    
  • 共通言語ランタイムのバージョンを取得しています。 次の例では、プロパティを Environment.Version 使用して、共通言語ランタイムに関するバージョン情報を取得します。

    // 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 使用してアプリケーションの発行バージョンを表示します。 正常に実行するには、例のアプリケーション ID を設定する必要があることに注意してください。 これは、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 使用して、1 つの Version オブジェクトが 2 番目のオブジェクトよりも前か、同じか、または 2 番目 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.

2 つのバージョンが等しくなるようにするには、最初 Version のオブジェクトのメジャー、マイナー、ビルド、リビジョン番号が 2 番目 Version のオブジェクトの番号と同じである必要があります。 オブジェクトのビルド番号またはリビジョン番号が未定義の Version 場合、その Version オブジェクトは、ビルド番号またはリビジョン番号が 0 に等しいオブジェクトよりも Version 前であると見なされます。 次の例では、未定義のバージョン コンポーネントを持つ 3 つの 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)

指定した 2 つの Version オブジェクトが等しいかどうかを判断します。

GreaterThan(Version, Version)

最初に指定した Version オブジェクトが 2 番目に指定した Version オブジェクトよりも大きいかどうかを判断します。

GreaterThanOrEqual(Version, Version)

最初に指定した Version オブジェクトが 2 番目に指定した Version オブジェクト以上であるかどうかを判断します。

Inequality(Version, Version)

指定した 2 つの Version オブジェクトが等しくないかどうかを判断します。

LessThan(Version, Version)

最初に指定した Version オブジェクトが 2 番目に指定した Version オブジェクトより小さいかどうかを判断します。

LessThanOrEqual(Version, Version)

最初に指定した Version オブジェクトが 2 番目に指定した Version オブジェクト以下かどうかを判断します。

明示的なインターフェイスの実装

IComparable.CompareTo(Object)

指定したオブジェクトと現在の Version オブジェクトを比較し、これらの相対値を示す値を返します。

IFormattable.ToString(String, IFormatProvider)

指定された書式を使用して現在のインスタンスの値を書式設定します。

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

現在のインスタンスの値を指定された文字範囲に書式設定しようとします。

適用対象