다음을 통해 공유


AssemblyVersionAttribute 클래스

정의

특성 사용 어셈블리의 버전을 지정합니다.

public ref class AssemblyVersionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class AssemblyVersionAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class AssemblyVersionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
type AssemblyVersionAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type AssemblyVersionAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AssemblyVersionAttribute = class
    inherit Attribute
Public NotInheritable Class AssemblyVersionAttribute
Inherits Attribute
상속
AssemblyVersionAttribute
특성

예제

다음 예제에서는 특성을 사용하여 AssemblyVersionAttribute 어셈블리에 버전 번호를 할당합니다. 컴파일 시 이 버전 정보는 어셈블리의 메타데이터와 함께 저장됩니다. 런타임에 예제는 실행 중인 어셈블리에 대한 참조를 가져오기 위해 어셈블리에 있는 형식의 속성 값을 Type.Assembly 검색하고 메서드에서 반환 Assembly.GetName 된 개체의 속성에서 Version 어셈블리의 AssemblyName 버전 정보를 검색합니다.

using System;
using System.Reflection;

[assembly:AssemblyVersionAttribute("2.0.1")]

public class Example1
{
   public static void Main()
   {
      Assembly thisAssem = typeof(Example1).Assembly;
      AssemblyName thisAssemName = thisAssem.GetName();
       
      Version ver = thisAssemName.Version;
       
      Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name);    
   }
}
// The example displays the following output:
//        This is version 2.0.1.0 of Example1.
Imports System.Reflection

<Assembly:AssemblyVersionAttribute("2.0.1")>
Module Example1
   Public Sub Main()
       Dim thisAssem As Assembly = GetType(Example1).Assembly
       Dim thisAssemName As AssemblyName = thisAssem.GetName()
       
       Dim ver As Version = thisAssemName.Version
       
       Console.WriteLine("This is version {0} of {1}.", ver, thisAssemName.Name)    
   End Sub
End Module
' The example displays the following output:
'      This is version 2.0.1.0 of Example1.

설명

특성은 AssemblyVersionAttribute 어셈블리에 버전 번호를 할당하는 데 사용됩니다. 그런 다음 해당 버전 번호는 어셈블리의 메타데이터와 함께 저장됩니다.

어셈블리 버전 번호는 어셈블리 ID의 일부이며 어셈블리 및 버전 정책에 바인딩하는 데 중요한 역할을 합니다. 런타임에서의 버전 정책은, 구성 파일(애플리케이션 구성 파일, 게시자 정책 파일 및 컴퓨터의 관리자 구성 파일)의 명시적인 버전 정책에 의해 재정의된 경우를 제외하고는, 처음 빌드되고 테스트될 때 사용된 버전으로만 애플리케이션이 실행되도록 합니다. 자세한 내용은 .NET의 어셈블리 를 참조하세요.

참고

버전 확인은 강력한 이름의 어셈블리에 대해서만 수행됩니다.

버전 번호에는 다음과 같이 네 부분으로 구성됩니다.

<주 버전>입니다.<부 버전>입니다.<빌드 번호>입니다.<수정>

중요

버전의 모든 구성 요소는 0보다 크거나 같은 정수여야 합니다. 메타데이터는 어셈블리의 주, 부, 빌드 및 수정 구성 요소를 최대값 UInt16.MaxValue 인 1로 제한합니다. 구성 요소가 이 값을 초과하면 컴파일 오류가 발생합니다.

예를 들어 는 [assembly:AssemblyVersion("2.3.25.1")] 2를 주 버전으로, 3을 부 버전으로, 25를 빌드 번호로, 1을 수정 버전 번호로 나타냅니다.

AssemblyVersionAttribute 특성을 사용하면 빌드 또는 수정 번호 대신 별표(*)를 지정할 수 있습니다. 와 같은 [assembly:AssemblyVersion("1.2.*")] 버전 번호는 1을 주 버전으로, 2를 부 버전으로 지정하고 기본 빌드 및 수정 번호를 허용합니다. 와 같은 [assembly:AssemblyVersion("1.2.15.*")] 버전 번호는 1을 주 버전으로, 2를 부 버전으로, 15를 빌드 번호로 지정하고 기본 수정 번호를 허용합니다. 기본 빌드 번호는 매일 증가합니다. 기본 수정 번호는 현지 시간 자정 이후의 시간(일광 절약 시간에 대한 표준 시간대 조정을 고려하지 않고)을 2로 나눈 시간(초)입니다. 빌드 번호에 별표 를 지정하는 경우 수정 번호를 지정할 수 없습니다.

중요

AssemblyVersionAttribute 별표 를 지정하는 특성을 사용합니다.

  • 빌드 출력을 재현할 수 없게 만듭니다(재현 가능한 빌드 참조). 프로젝트가 빌드 속성을 오류 CS8357true 설정하는 Deterministic 경우 컴파일러가 보고합니다.
  • 빌드가 컴파일러 출력을 캐싱하지 못하도록 방지하므로 빌드 성능이 저하될 수 있습니다.
  • 편집 & 계속핫 다시 로드 기능과 호환되지 않습니다.

다음과 같이 조건부 컴파일을 사용하여 빌드를 릴리스하는 데 시간 기반 버전의 사용을 제한하여 이러한 문제 중 일부를 완화할 수 있습니다.

#if DEBUG
[assembly: AssemblyVersion("1.0.0.0")]
#else
[assembly: AssemblyVersion("1.0.*")]
#endif

버전 관리의 더 나은 방법은 커밋 SHA에서 HEAD 어셈블리 또는 파일 버전을 파생하는 것입니다(git 리포지토리의 경우). 예를 들어 Nerdbank.GitVersioning을 참조하세요.

어셈블리 주 버전과 부 버전은 어셈블리를 내보낼 때 형식 라이브러리 버전 번호로 사용됩니다. 일부 COM 호스트는 버전 번호가 0.0인 형식 라이브러리를 허용하지 않습니다. 따라서 COM 클라이언트에 어셈블리를 노출하려는 경우 Visual Studio 2005 AssemblyVersionAttribute 외부에서 생성된 프로젝트의 경우 지정된 없이 AssemblyVersionAttribute 페이지에서 어셈블리 버전을 명시적으로 1.0으로 설정합니다. 어셈블리 버전이 0.0인 경우에도 이 작업을 수행합니다. Visual Studio 2005에서 만든 모든 프로젝트에는 기본 어셈블리 버전이 1.0.*입니다.

로드한 어셈블리의 이름을 얻으려면 어셈블리에서 를 호출 GetName 하여 를 AssemblyName가져와 속성을 가져옵니다 Version . 로드 되지 않은 어셈블리의 이름을 가져오려면 호출 GetAssemblyName 애플리케이션에서 사용 하는 어셈블리 버전을 확인 하려면 클라이언트 애플리케이션에서 합니다.

특성은 AssemblyVersionAttribute 한 번만 적용할 수 있습니다. 일부 Visual Studio 프로젝트 템플릿에는 이미 특성이 포함되어 있습니다. 이러한 프로젝트에서 코드에 특성을 추가하면 컴파일러 오류가 발생합니다.

생성자

AssemblyVersionAttribute(String)

특성 사용 어셈블리의 버전 번호로 AssemblyVersionAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)
Version

특성 사용 어셈블리의 버전 번호를 가져옵니다.

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

(다음에서 상속됨 Attribute)
Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상

추가 정보