다음을 통해 공유


System.Version 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스는 Version 어셈블리, 운영 체제 또는 공용 언어 런타임의 버전 번호를 나타냅니다. 버전 번호는 주, 부, 빌드 및 수정의 2~4개 구성 요소로 구성됩니다. 주 구성 요소와 부 구성 요소가 필요합니다. 빌드 및 수정 버전 구성 요소는 선택 사항이지만 수정 구성 요소가 정의된 경우 빌드 구성 요소가 필요합니다. 정의된 모든 구성 요소는 0보다 크거나 같은 정수여야 합니다. 버전 번호의 형식은 다음과 같습니다(선택적 구성 요소는 대괄호로 표시됨).

주.minor[.build[.revision]]

구성 요소는 다음과 같이 규칙에 의해 사용됩니다.

  • : 이름이 같지만 주 버전이 다른 어셈블리는 서로 교환할 수 없습니다. 버전 번호가 높을수록 이전 버전과의 호환성을 가정할 수 없는 제품의 주요 재작성이 표시될 수 있습니다.

  • 부: 두 어셈블리의 이름 및 주 버전 번호가 동일하지만 부 버전 번호가 다른 경우 이전 버전과의 호환성이 크게 향상되었음을 나타냅니다. 부 버전 번호가 높을수록 제품의 포인트 릴리스 또는 완전히 이전 버전과 호환되는 새 버전의 제품을 나타낼 수 있습니다.

  • 빌드: 빌드 번호의 차이는 동일한 원본의 다시 컴파일을 나타냅니다. 프로세서, 플랫폼 또는 컴파일러가 변경될 때 다른 빌드 번호가 사용될 수 있습니다.

  • 수정 버전: 이름, 주 버전 및 부 버전 번호가 같지만 수정 버전이 다른 어셈블리는 완전히 바꿔야 합니다. 이전에 릴리스된 어셈블리의 보안 허점을 수정하는 빌드에서 더 높은 수정 번호를 사용할 수 있습니다.

빌드 또는 수정 번호에 의해서만 다른 어셈블리의 후속 버전은 이전 버전의 핫픽스 업데이트로 간주됩니다.

Important

명시적으로 할당되지 않은 속성 값 Version 은 정의되지 않았습니다(-1).

MajorRevisionMinorRevision 속성을 사용하면 애플리케이션의 임시 버전을 식별할 수 있습니다. 예를 들어 영구 솔루션을 해제할 때까지 문제를 수정합니다. 또한 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 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
    
  • 현재 어셈블리의 어셈블리 버전 검색 다음 예제에서는 합니다 Type.Assembly 속성에 대 한 참조를 가져오려면는 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
    
  • 특정 어셈블리의 버전을 검색합니다. 다음 예제에서는 메서드를 Assembly.ReflectionOnlyLoadFrom 사용하여 특정 파일 이름을 가진 개체에 Assembly 대한 참조를 가져온 다음 해당 버전 정보를 검색합니다. 파일 이름 또는 강력한 이름으로 개체를 Assembly 인스턴스화하는 다른 여러 메서드도 있습니다.

    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 애플리케이션의 게시 버전을 검색 합니다. 다음 예제에서는 ApplicationDeployment.CurrentVersion 속성을 애플리케이션의 게시 버전을 표시 합니다. 성공적으로 실행 예제의 애플리케이션 id를 설정할 필요는 note 합니다. 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
    

    Important

    ClickOnce 배포를 위한 애플리케이션의 게시 버전은 완전히 별개의 어셈블리 버전입니다.

버전 개체 비교

메서드를 CompareTo 사용하여 한 Version 개체가 두 번째 개체보다 이전인지, 같은지 또는 두 번째 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.

두 버전이 같아야 하려면 첫 번째 Version 개체의 주, 부, 빌드 및 수정 번호가 두 번째 Version 개체의 주 버전과 동일해야 합니다. 개체의 Version 빌드 또는 수정 번호가 정의되지 않은 경우 해당 Version 개체는 빌드 또는 수정 번호가 0인 개체보다 Version 이전으로 간주됩니다. 다음 예제에서는 정의되지 않은 버전 구성 요소가 있는 세 Version 개체를 비교하여 이를 보여 줍니다.

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