System.Version – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Třída Version představuje číslo verze sestavení, operačního systému nebo modulu CLR (Common Language Runtime). Čísla verzí se skládají ze dvou až čtyř součástí: hlavní, podverze, sestavení a revize. Jsou vyžadovány hlavní a vedlejší součásti; součásti sestavení a revize jsou volitelné, ale pokud je definována komponenta revize, je vyžadována komponenta sestavení. Všechny definované komponenty musí být celé číslo větší nebo rovno 0. Formát čísla verze je následující (volitelné součásti jsou uvedeny v hranatých závorkách):

majore.minor[.build[.revize]]

Komponenty se používají konvencí následujícím způsobem:

  • Hlavní: Sestavení se stejným názvem, ale různé hlavní verze nejsou zaměnitelné. Vyšší číslo verze může znamenat hlavní přepsání produktu, u kterého nelze předpokládat zpětnou kompatibilitu.

  • Podverze: Pokud je název a číslo hlavní verze na dvou sestaveních stejné, ale číslo podverze se liší, znamená to významné vylepšení se záměrem zpětné kompatibility. Toto vyšší číslo podverze může znamenat bod vydání produktu nebo plně zpětně kompatibilní novou verzi produktu.

  • Sestavení: Rozdíl v čísle sestavení představuje rekompilace stejného zdroje. Různá čísla sestavení se můžou použít při změně procesoru, platformy nebo kompilátoru.

  • Revize: Sestavení se stejným názvem, hlavním názvem a podverzemi, ale různé revize mají být plně zaměnitelné. Vyšší číslo revize se může použít v buildu, který opravuje bezpečnostní díru v dříve vydaném sestavení.

Další verze sestavení, které se liší pouze čísly sestavení nebo revize jsou považovány za aktualizace hotfix předchozí verze.

Důležité

Hodnota Version vlastností, které nebyly explicitně přiřazeny, je nedefinovaná (-1).

MinorRevision Vlastnosti MajorRevision umožňují identifikovat dočasnou verzi aplikace, která například opraví problém, dokud nebudete moct uvolnit trvalé řešení. Kromě toho systém Windows NT operační systém používá MajorRevision vlastnost ke kódování čísla aktualizace Service Pack.

Přiřazení informací o verzi sestavením

Obvykle se Version třída nepoužívá k přiřazení čísla verze sestavení. Místo toho se AssemblyVersionAttribute třída používá k definování verze sestavení, jak je znázorněno v příkladu v tomto článku.

Načtení informací o verzi

Version objekty se nejčastěji používají k ukládání informací o verzi některých systémových nebo aplikačních komponent (například operačního systému), modulu CLR (Common Language Runtime), spustitelném souboru aktuální aplikace nebo určitém sestavení. Následující příklady ilustrují některé z nejběžnějších scénářů:

  • Načtení verze operačního systému Následující příklad používá OperatingSystem.Version vlastnost k načtení čísla verze operačního systému.

    // 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())
    
  • Načtení verze modulu CLR (Common Language Runtime) Následující příklad používá Environment.Version vlastnost k načtení informací o verzi modulu CLR (Common Language Runtime).

    // 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())
    
  • Načtení verze sestavení aktuální aplikace Následující příklad používá metodu Assembly.GetEntryAssembly k získání odkazu na Assembly objekt, který představuje spustitelný soubor aplikace a pak načte jeho číslo verze sestavení.

    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
    
  • Načtení verze sestavení aktuálního sestavení Následující příklad používá Type.Assembly vlastnost k získání odkazu na Assembly objekt, který představuje sestavení, které obsahuje vstupní bod aplikace a poté načte informace o jeho verzi.

    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
    
  • Načtení verze konkrétního sestavení Následující příklad používá metodu Assembly.ReflectionOnlyLoadFrom k získání odkazu na Assembly objekt, který má konkrétní název souboru a pak načte informace o jeho verzi. Všimněte si, že existuje i několik dalších metod pro vytvoření instance objektu Assembly podle názvu souboru nebo silného názvu.

    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
    
  • Načítání verze publikování aplikace ClickOnce Následující příklad používá ApplicationDeployment.CurrentVersion vlastnost k zobrazení verze publikování aplikace. Všimněte si, že úspěšné spuštění vyžaduje, aby byla nastavena identita aplikace příkladu. To automaticky zpracovává Průvodce publikováním sady 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
    

    Důležité

    Verze publikování aplikace pro nasazení ClickOnce je zcela nezávislá na verzi sestavení.

Porovnání objektů verzí

Metodu CompareTo můžete použít k určení, zda jeden Version objekt je dřívější než, stejný jako nebo novější než druhý Version objekt. Následující příklad označuje, že verze 2.1 je novější než verze 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.

Aby byly dvě verze stejné, musí být hlavní, podverze, sestavení a čísla revizí prvního Version objektu shodné s čísly druhého Version objektu. Pokud číslo sestavení nebo revize objektu Version není definováno, Version považuje se tento objekt za dřívější než Version objekt, jehož číslo sestavení nebo revize je rovno nule. Následující příklad to ilustruje porovnáním tří Version objektů, které mají nedefinované součásti verze.

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