Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
Klassen Version representerar versionsnumret för en sammansättning, ett operativsystem eller den vanliga språkkörningen. Versionsnummer består av två till fyra komponenter: major, minor, build och revision. De viktigaste och mindre komponenterna krävs. versions- och revisionskomponenterna är valfria, men byggkomponenten krävs om revisionskomponenten har definierats. Alla definierade komponenter måste vara heltal större än eller lika med 0. Versionsnumrets format är följande (valfria komponenter visas inom hakparenteser):
huvud. mindre[.bygge[.revision]]
Komponenterna används enligt konventionen enligt följande:
Major: Sammansättningar med samma namn men olika större versioner är inte utbytbara. Ett högre versionsnummer kan tyda på en större omskrivning av en produkt där bakåtkompatibilitet inte kan antas.
Mindre: Om namnet och huvudversionsnumret på två sammansättningar är desamma, men det lägre versionsnumret skiljer sig, indikerar detta en betydande förbättring med avsikten bakåtkompatibilitet. Det här högre delversionsnumret kan tyda på en punktversion av en produkt eller en helt bakåtkompatibel ny version av en produkt.
Build: En skillnad i versionsnummer representerar en omkompilering av samma källa. Olika byggnummer kan användas när processorn, plattformen eller kompilatorn ändras.
Revision: Sammansättningar med samma namn, huvud- och delversionsnummer, men olika revisioner är avsedda att vara helt utbytbara. Ett högre revisionsnummer kan användas i en version som åtgärdar ett säkerhetshål i en tidigare frisläppt sammansättning.
Efterföljande versioner av en sammansättning som endast skiljer sig åt efter versions- eller revisionsnummer anses vara snabbkorrigeringsuppdateringar av den tidigare versionen.
Viktigt!
Värdet för Version egenskaper som inte uttryckligen har tilldelats ett värde är odefinierat (-1).
Med MajorRevision egenskaperna och MinorRevision kan du identifiera en tillfällig version av ditt program som till exempel korrigerar ett problem tills du kan släppa en permanent lösning. Dessutom använder MajorRevision Windows NT-operativsystemet egenskapen för att koda service pack-numret.
Tilldela versionsinformation till sammansättningar
Vanligtvis används inte klassen Version för att tilldela ett versionsnummer till en assembly. I AssemblyVersionAttribute stället används klassen för att definiera en sammansättnings version, vilket illustreras av exemplet i den här artikeln.
Hämta versionsinformation
Version objekt används oftast för att lagra versionsinformation om någon system- eller programkomponent (till exempel operativsystemet), den vanliga språkkörningen, det aktuella programmets körbara fil eller en viss sammansättning. Följande exempel illustrerar några av de vanligaste scenarierna:
Hämtar operativsystemets version. I följande exempel används OperatingSystem.Version egenskapen för att hämta versionsnumret för operativsystemet.
// Get the operating system version. OperatingSystem os = Environment.OSVersion; Version ver = os.Version; Console.WriteLine($"Operating System: {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())Hämtar versionen av Common Language Runtime. I följande exempel används egenskapen Environment.Version för att hämta versionsinformation om den gemensamma språkkörningsmiljön.
// Get the common language runtime version. Version ver = Environment.Version; Console.WriteLine($"CLR Version {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())Hämtar det aktuella programmets sammansättningsversion. I följande exempel används Assembly.GetEntryAssembly metoden för att hämta en referens till ett Assembly objekt som representerar det körbara programmet och sedan hämtar dess sammansättningsversionsnummer.
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 ModuleHämtar den aktuella sammansättningens sammansättningsversion. I följande exempel används Type.Assembly egenskapen för att hämta en referens till ett Assembly objekt som representerar sammansättningen som innehåller programmets startpunkt och sedan hämtar dess versionsinformation.
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 ModuleHämtar versionen av en specifik sammansättning. I följande exempel används Assembly.ReflectionOnlyLoadFrom metoden för att hämta en referens till ett Assembly objekt som har ett visst filnamn och sedan hämtar dess versionsinformation. Observera att det också finns flera andra metoder för att instansiera ett Assembly objekt efter filnamn eller med starkt namn.
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 ModuleHämtar publiceringsversionen av ett ClickOnce-program. I följande exempel används ApplicationDeployment.CurrentVersion egenskapen för att visa ett programs publiceringsversion. Observera att dess framgångsrika körning kräver att exemplets programidentitet anges. Detta hanteras automatiskt av Visual Studio-publiceringsguiden.
using System; using System.Deployment.Application; public class Example { public static void Main() { Version ver = ApplicationDeployment.CurrentDeployment.CurrentVersion; Console.WriteLine($"ClickOnce Publish Version: {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 ModuleViktigt!
Publiceringsversionen av ett program för ClickOnce-distributionen är helt oberoende av dess sammansättningsversion.
Jämföra versionsobjekt
Du kan använda CompareTo metoden för att avgöra om ett Version objekt är tidigare än, samma som eller senare än ett andra Version objekt. I följande exempel anges att version 2.1 är senare än version 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 {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.
För att två versioner ska vara lika måste huvud-, del-, versions- och revisionsnumren för det första Version objektet vara identiska med dem för det andra Version objektet. Om versions- eller revisionsnumret för ett Version objekt är odefinierat anses objektet Version vara tidigare än ett Version objekt vars versions- eller revisionsnummer är lika med noll. Följande exempel illustrerar detta genom att jämföra tre Version objekt som har odefinierade versionskomponenter.
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 {v1} to {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