System.Version sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Version sınıfı bir derlemenin, işletim sisteminin veya ortak dil çalışma zamanının sürüm numarasını temsil eder. Sürüm numaraları iki-dört bileşenden oluşur: birincil, ikincil, derleme ve düzeltme. Ana ve ikincil bileşenler gereklidir; derleme ve düzeltme bileşenleri isteğe bağlıdır, ancak düzeltme bileşeni tanımlanmışsa derleme bileşeni gereklidir. Tüm tanımlı bileşenler 0'dan büyük veya buna eşit tamsayılar olmalıdır. Sürüm numarasının biçimi aşağıdaki gibidir (isteğe bağlı bileşenler köşeli ayraç içinde gösterilir):

büyük.küçük[.derleme[.düzeltme]]

Bileşenler kural tarafından aşağıdaki gibi kullanılır:

  • Ana: Aynı ada sahip ancak farklı ana sürümlere sahip derlemeler birbirinin yerine kullanılamaz. Daha yüksek bir sürüm numarası, geriye dönük uyumluluğun varsayılamadığı bir ürünün büyük bir yeniden yazıldığını gösterebilir.

  • İkincil: İki derlemedeki ad ve ana sürüm numarası aynıysa, ancak ikincil sürüm numarası farklıysa, bu geriye dönük uyumluluk amacıyla önemli bir geliştirme olduğunu gösterir. Bu daha yüksek ikincil sürüm numarası, ürünün bir nokta sürümünü veya ürünün geriye dönük uyumlu yeni bir sürümünü gösterebilir.

  • Derleme: Derleme numarasındaki fark, aynı kaynağın yeniden derlemesidir. İşlemci, platform veya derleyici değiştiğinde farklı derleme numaraları kullanılabilir.

  • Düzeltme: Aynı ad, ana ve ikincil sürüm numaralarına sahip derlemeler, ancak farklı düzeltmelerin tamamen değiştirilebilir olması amaçlanmıştır. Daha önce yayımlanan derlemedeki bir güvenlik deliğini düzelten bir derlemede daha yüksek bir düzeltme numarası kullanılabilir.

Derlemenin yalnızca derleme veya düzeltme numaralarına göre farklılık gösteren sonraki sürümleri, önceki sürümün Düzeltme güncelleştirmeleri olarak kabul edilir.

Önemli

Açıkça bir değer atanmamış özelliklerin Version değeri tanımsız (-1) olur.

MajorRevision ve MinorRevision özellikleri, uygulamanızın geçici bir sürümünü tanımlamanıza olanak tanır; örneğin, kalıcı bir çözüm serbest bırakana kadar bir sorunu düzeltebilir. Ayrıca, Windows NT işletim sistemi hizmet paketi numarasını kodlamak için özelliğini kullanır MajorRevision .

Derlemelere sürüm bilgileri atama

Normalde, Version sınıf bir derlemeye sürüm numarası atamak için kullanılmaz. Bunun yerine sınıfı, AssemblyVersionAttribute bu makaledeki örnekte gösterildiği gibi bir derlemenin sürümünü tanımlamak için kullanılır.

Sürüm bilgilerini alma

Version nesneleri en sık bazı sistem veya uygulama bileşeni (işletim sistemi gibi), ortak dil çalışma zamanı, geçerli uygulamanın yürütülebilir dosyası veya belirli bir derleme hakkındaki sürüm bilgilerini depolamak için kullanılır. Aşağıdaki örneklerde en yaygın senaryolardan bazıları gösterilmektedir:

  • İşletim sistemi sürümü alınıyor. Aşağıdaki örnek, işletim sisteminin sürüm numarasını almak için özelliğini kullanır 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())
    
  • Ortak dil çalışma zamanının sürümü alınıyor. Aşağıdaki örnek, ortak dil çalışma zamanı hakkında sürüm bilgilerini almak için özelliğini kullanır 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())
    
  • Geçerli uygulamanın derleme sürümü alınıyor. Aşağıdaki örnek, uygulama yürütülebilir dosyasını temsil eden ve ardından derleme sürüm numarasını alan bir Assembly nesneye başvuru almak için yöntemini kullanırAssembly.GetEntryAssembly.

    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
    
  • Geçerli derlemenin derleme sürümü alınıyor. Aşağıdaki örnek, uygulama giriş noktasını içeren derlemeyi temsil eden bir Assembly nesneye başvuru almak ve ardından sürüm bilgilerini almak için özelliğini kullanırType.Assembly.

    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
    
  • Belirli bir derlemenin sürümünü alma. Aşağıdaki örnek, belirli bir dosya adına sahip bir Assembly nesneye başvuru almak için yöntemini kullanır Assembly.ReflectionOnlyLoadFrom ve ardından sürüm bilgilerini alır. Bir Assembly nesnenin örneğini dosya adına veya tanımlayıcı ada göre başlatmak için birkaç farklı yöntemin de bulunduğunu unutmayın.

    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
    
  • ClickOnce uygulamasının Yayımlama Sürümünü alma. Aşağıdaki örnek, bir uygulamanın Yayımlama Sürümünü görüntülemek için özelliğini kullanır ApplicationDeployment.CurrentVersion . Başarılı bir şekilde yürütülmesi için örneğin uygulama kimliğinin ayarlanması gerektiğini unutmayın. Bu, Visual Studio Yayımlama Sihirbazı tarafından otomatik olarak işlenir.

    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
    

    Önemli

    ClickOnce dağıtımı için bir uygulamanın Yayımlama Sürümü, derleme sürümünden tamamen bağımsızdır.

Sürüm nesnelerini karşılaştırma

Bir Version nesnenin CompareTo ikinci Version bir nesneden önceki, aynı veya sonraki bir nesne olup olmadığını belirlemek için yöntemini kullanabilirsiniz. Aşağıdaki örnek, Sürüm 2.1'in Sürüm 2.0'dan sonra olduğunu gösterir.

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.

İki sürümün eşit olması için, ilk Version nesnenin birincil, ikincil, derleme ve düzeltme numaralarının ikinci Version nesneninkilerle aynı olması gerekir. Bir Version nesnenin derleme veya düzeltme numarası tanımlanmamışsa, bu Version nesne, derleme veya düzeltme numarası sıfıra eşit olan bir Version nesneden daha eski olarak kabul edilir. Aşağıdaki örnek, tanımlanmamış sürüm bileşenlerine sahip üç Version nesneyi karşılaştırarak bunu gösterir.

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