Kelas System.Version

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Kelas Version mewakili nomor versi rakitan, sistem operasi, atau runtime bahasa umum. Nomor versi terdiri dari dua hingga empat komponen: utama, minor, build, dan revisi. Komponen utama dan minor diperlukan; komponen build dan revisi bersifat opsional, tetapi komponen build diperlukan jika komponen revisi ditentukan. Semua komponen yang ditentukan harus berupa bilangan bulat yang lebih besar dari atau sama dengan 0. Format nomor versi adalah sebagai berikut (komponen opsional ditampilkan dalam tanda kurung siku):

utama.minor[.build[.revisi]]

Komponen digunakan oleh konvensi sebagai berikut:

  • Mayor: Rakitan dengan nama yang sama tetapi versi utama yang berbeda tidak dapat dipertukarkan. Nomor versi yang lebih tinggi mungkin menunjukkan penulisan ulang utama produk di mana kompatibilitas mundur tidak dapat diasumsikan.

  • Minor: Jika nama dan nomor versi utama pada dua rakitan sama, tetapi nomor versi minor berbeda, ini menunjukkan peningkatan signifikan dengan niat kompatibilitas mundur. Nomor versi minor yang lebih tinggi ini mungkin menunjukkan rilis titik produk atau versi baru produk yang sepenuhnya kompatibel dengan versi baru.

  • Build: Perbedaan dalam nomor build mewakili kompilasi ulang dari sumber yang sama. Nomor build yang berbeda dapat digunakan saat prosesor, platform, atau kompilator berubah.

  • Revisi: Rakitan dengan nama, utama, dan nomor versi minor yang sama tetapi revisi yang berbeda dimaksudkan untuk sepenuhnya dapat dipertukarkan. Nomor revisi yang lebih tinggi dapat digunakan dalam build yang memperbaiki lubang keamanan di rakitan yang dirilis sebelumnya.

Versi rakitan berikutnya yang hanya berbeda dengan nomor build atau revisi dianggap sebagai pembaruan Perbaikan dari versi sebelumnya.

Penting

Nilai Version properti yang belum ditetapkan secara eksplisit nilai tidak terdefinisi (-1).

Properti MajorRevision dan MinorRevision memungkinkan Anda mengidentifikasi versi sementara aplikasi Anda yang, misalnya, memperbaiki masalah hingga Anda dapat merilis solusi permanen. Selain itu, sistem operasi Windows NT menggunakan MajorRevision properti untuk mengodekan nomor paket layanan.

Menetapkan informasi versi ke rakitan

Biasanya, Version kelas tidak digunakan untuk menetapkan nomor versi ke rakitan. Sebaliknya, AssemblyVersionAttribute kelas digunakan untuk menentukan versi assembly, seperti yang diilustrasikan oleh contoh dalam artikel ini.

Mengambil informasi versi

Version objek paling sering digunakan untuk menyimpan informasi versi tentang beberapa sistem atau komponen aplikasi (seperti sistem operasi), runtime bahasa umum, aplikasi saat ini yang dapat dieksekusi, atau rakitan tertentu. Contoh berikut mengilustrasikan beberapa skenario yang paling umum:

  • Mengambil versi sistem operasi. Contoh berikut menggunakan OperatingSystem.Version properti untuk mengambil nomor versi sistem operasi.

    // 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())
    
  • Mengambil versi runtime bahasa umum. Contoh berikut menggunakan Environment.Version properti untuk mengambil informasi versi tentang runtime bahasa umum.

    // 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())
    
  • Mengambil versi rakitan aplikasi saat ini. Contoh berikut menggunakan Assembly.GetEntryAssembly metode untuk mendapatkan referensi ke Assembly objek yang mewakili aplikasi yang dapat dieksekusi lalu mengambil nomor versi rakitannya.

    using System;
    using System.Reflection;
    
    public class Example4
    {
       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 Example3
        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
    
  • Mengambil versi rakitan rakitan saat ini. Contoh berikut menggunakan Type.Assembly properti untuk mendapatkan referensi ke Assembly objek yang mewakili assembly yang berisi titik entri aplikasi, lalu mengambil informasi versinya.

    using System;
    using System.Reflection;
    
    public class Example3
    {
       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 Example1
        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())
        End Sub
    End Module
    
  • Mengambil versi rakitan tertentu. Contoh berikut menggunakan Assembly.ReflectionOnlyLoadFrom metode untuk mendapatkan referensi ke Assembly objek yang memiliki nama file tertentu, lalu mengambil informasi versinya. Perhatikan bahwa beberapa metode lain juga ada untuk membuat instans Assembly objek berdasarkan nama file atau dengan nama yang kuat.

    using System;
    using System.Reflection;
    
    public class Example5
    {
       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 Example4
        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
    
  • Mengambil Versi Publikasi aplikasi ClickOnce. Contoh berikut menggunakan ApplicationDeployment.CurrentVersion properti untuk menampilkan Versi Terbitkan aplikasi. Perhatikan bahwa keberhasilan eksekusinya mengharuskan identitas aplikasi contoh diatur. Ini ditangani secara otomatis oleh Wizard Penerbitan 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 Example0
        Public Sub Main()
            Dim ver As Version = ApplicationDeployment.CurrentDeployment.CurrentVersion
            Console.WriteLine("ClickOnce Publish Version: {0}", ver)
        End Sub
    End Module
    

    Penting

    Versi Publikasikan aplikasi untuk penyebaran ClickOnce sepenuhnya independen dari versi rakitannya.

Membandingkan objek versi

Anda dapat menggunakan CompareTo metode untuk menentukan apakah satu Version objek lebih awal dari, sama seperti, atau lebih baru dari objek kedua Version . Contoh berikut menunjukkan bahwa Versi 2.1 lebih baru dari Versi 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.

Agar dua versi sama, nomor utama, minor, build, dan revisi objek pertama Version harus identik dengan objek kedua Version . Jika nomor Version build atau revisi objek tidak ditentukan, Version objek tersebut dianggap lebih awal dari Version objek yang nomor build atau revisinya sama dengan nol. Contoh berikut mengilustrasikan ini dengan membandingkan tiga Version objek yang memiliki komponen versi yang tidak ditentukan.

using System;

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

public class Example2
{
   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 Example2
    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