Visual Basic의 전역 특성

업데이트: 2007년 11월

대부분의 특성은 클래스나 메서드 등과 같은 특정 언어 요소에 추가됩니다. 그러나 일부 특성은 전역 특성이므로 전체 어셈블리나 모듈에 적용될 수 있습니다.

어셈블리 정보 대화 상자를 통해 Visual Studio IDE(통합 개발 환경) 내에서 여러 특성을 설정할 수 있습니다. 자세한 내용은 응용 프로그램 속성 관리어셈블리 및 매니페스트 서명 관리를 참조하십시오.

어셈블리 특성

어셈블리 수준의 특성은 다음 구문을 사용하여 지정합니다.

<Assembly: Attribute1, Assembly: Attribute2..., Assembly: AttributeN>

모듈 수준의 특성은 다음과 비슷한 구문을 사용하여 지정합니다.

<Module: Attribute1, Module: Attribute2..., Module: AttributeN>

소스 코드에서 전역 특성은 Option Explicit 및 Imports 문과 같은 최상위 지시문 뒤, 형식이나 네임스페이스 선언보다는 앞에 추가합니다. 전역 특성은 프로젝트의 여러 소스 파일에 나타날 수 있지만 일반적으로 Visual Basic 프로젝트를 사용하여 자동으로 만들어진 AssemblyInfo.vb 파일에 놓입니다.

어셈블리 특성은 어셈블리에 대한 정보를 제공하는 값입니다. 어셈블리 특성은 다음 범주로 구분됩니다.

  • 어셈블리 ID 특성

  • 정보 특성

  • 어셈블리 매니페스트 특성

  • 강력한 이름 특성

어셈블리 ID 특성

이름, 버전 및 문화권의 세 특성(적용 가능한 경우 강력한 이름도 포함)에 따라 어셈블리 ID가 결정됩니다. 이 세 특성은 어셈블리의 전체 이름을 구성하며, 코드에서 어셈블리를 참조하는 경우 이 특성이 필요합니다. 특성을 사용하여 어셈블리의 버전과 문화권을 설정할 수 있습니다. 그러나 이름 값은 어셈블리 매니페스트를 포함하는 파일을 기준으로 어셈블리가 만들어질 때 컴파일러, 어셈블리 정보 대화 상자의 Visual Studio IDE 또는 어셈블리 링커(Al.exe)에 의해 설정됩니다. AssemblyFlagsAttribute 특성은 어셈블리의 여러 복사본이 함께 있을 수 있는지 여부를 지정합니다.

다음 표는 ID 특성을 보여 줍니다.

특성

용도

AssemblyName

어셈블리의 ID를 자세히 설명합니다.

AssemblyVersionAttribute

어셈블리의 버전을 지정합니다.

AssemblyCultureAttribute

어셈블리가 지원하는 문화권을 지정합니다.

AssemblyFlagsAttribute

같은 컴퓨터, 같은 프로세스 또는 같은 응용 프로그램 도메인에서 어셈블리가 side-by-side 실행을 지원하는지 여부를 지정합니다.

다음 코드에서는 어셈블리에 버전 및 문화권 특성을 적용합니다.

'Set version number for assembly.
<Assembly: Reflection.AssemblyVersionAttribute("4.3.2.1")> 
'Set culture as German.
<Assembly: Reflection.AssemblyCultureAttribute("de")> 

정보 특성

정보 특성을 사용하면 어셈블리에 다른 회사 및 제품 정보를 제공할 수 있습니다. 다음 표에서는 System.Reflection 네임스페이스에 정의된 정보 특성을 보여 줍니다.

특성

용도

AssemblyProductAttribute

어셈블리 매니페스트에 대한 제품 이름을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyTrademarkAttribute

어셈블리 매니페스트에 대한 상표를 지정하는 사용자 지정 특성을 정의합니다.

AssemblyInformationalVersionAttribute

어셈블리 매니페스트에 대한 정보 버전을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyCompanyAttribute

어셈블리 매니페스트에 대한 회사 이름을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyCopyrightAttribute

어셈블리 매니페스트에 대한 저작권을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyFileVersionAttribute

컴파일러가 Win32 파일 버전 리소스에 대해 특정 버전 번호를 사용하도록 합니다.

CLSCompliantAttribute

어셈블리가 CLS(공용 언어 사양) 규격인지 여부를 나타냅니다.

어셈블리 매니페스트 특성

어셈블리 매니페스트 특성을 사용하여 어셈블리 매니페스트에서 정보를 제공할 수 있습니다. 여기에는 제목, 설명, 기본 별칭 및 구성이 포함됩니다. 다음 표에서는 System.Reflection 네임스페이스에 정의된 어셈블리 매니페스트 특성을 보여 줍니다.

특성

용도

AssemblyTitleAttribute

어셈블리 매니페스트에 대한 어셈블리 제목을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyDescriptionAttribute

어셈블리 매니페스트에 대한 어셈블리 설명을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyConfigurationAttribute

어셈블리 매니페스트에 대한 어셈블리 구성(예: retail 또는 debug)을 지정하는 사용자 지정 특성을 정의합니다.

AssemblyDefaultAliasAttribute

어셈블리 매니페스트에 대한 기본 별칭을 정의합니다.

강력한 이름 특성

강력한 이름은 어셈블리의 ID와 무결성을 보호하는 고유 식별자입니다. 프로젝트 디자이너, 서명 페이지를 통해 Visual Studio IDE에서 어셈블리에 서명할 수 있습니다. 자세한 내용은 어셈블리 및 매니페스트 서명 관리를 참조하십시오.

또는 강력한 이름 특성을 사용하면 어셈블리에 대해 강력한 이름을 설정할 수 있습니다. 다음 표에서는 System.Reflection 네임스페이스에 정의된 강력한 이름 특성을 보여 줍니다.

특성

용도

AssemblyDelaySignAttribute

실행 파일에서 강력한 이름 시그니처를 위한 공간을 확보하되 실제 서명은 다음 단계까지 미룰지 여부를 표시하는 부울 값입니다. 자세한 내용은 어셈블리 서명 연기를 참조하십시오.

AssemblyKeyFileAttribute

파일에 키가 포함되어 있다는 것을 나타냅니다. KeyFile의 위치는 프로젝트 출력 디렉터리에 상대적이어야 합니다. 프로젝트 출력 디렉터리는 %Project Directory%\obj\<configuration>입니다. 예를 들어, KeyFile이 프로젝트 디렉터리에 있으면 AssemblyKeyFile 특성을 다음과 같이 지정합니다.

[assembly: AssemblyKeyFile("..\\..\\mykey.snk")]

AssemblyKeyNameAttribute

컴퓨터의 CSP(암호화 서비스 공급자)에 설치된 키를 참조합니다. 파일에 서명하려면 키를 지정해야 합니다.

KeyFile과 KeyName 값을 모두 지정하면 다음과 같이 처리됩니다.

  • KeyName을 CSP에서 찾을 수 있으면 이 키가 사용됩니다.

  • KeyName이 없고 KeyFile이 있으면 KeyFile의 키가 CSP에 설치되어 사용됩니다.

  • 자세한 내용은 어셈블리 보안 고려 사항을 참조하십시오.

어셈블리 서명

강력한 이름을 사용하거나 서명을 통한 서로 다른 두 가지, 상호 보완적인 방법으로 어셈블리에 서명할 수 있습니다. Visual Studio IDE 프로젝트 디자이너, 서명 페이지를 사용하거나 파일 서명 도구(Signcode.exe)를 사용하여 서명할 수 있습니다. 강력한 이름을 사용하여 어셈블리에 서명하면 어셈블리 매니페스트를 포함하는 파일에 공개 키 암호화가 추가됩니다. 이 방법을 사용하면 참조를 확인할 때 이름의 고유성이 보장되고 이름 스푸핑을 방지할 수 있으며, 호출자에게 ID가 제공됩니다. 자세한 내용은 어셈블리 및 매니페스트 서명 관리방법: 강력한 이름으로 어셈블리 서명을 참조하십시오.

강력한 이름을 사용하여 어셈블리에 서명하려면

  1. 강력한 이름 도구(Sn.exe)를 사용하여 키 쌍을 포함하는 키 파일을 생성합니다.

  2. Visual Basic 프로젝트에서 자동으로 만든 AssemblyInfo.vb 파일에 강력한 이름 특성을 추가합니다. 이 파일을 편집하려면 솔루션 탐색기에서 파일 이름을 두 번 클릭합니다.

    다음 예제에서는 서명을 연기하여 공개 키 파일 myKey.snk로 강력한 이름 어셈블리를 만듭니다.

    <Assembly: Reflection.AssemblyKeyFile("myKey.snk")> 
    <Assembly: Reflection.AssemblyDelaySign(True)> 
    
    참고:

    /target:module 옵션을 사용하여 명령줄에서 어셈블리를 컴파일하는 경우처럼 어셈블리를 만들지 않는 경우에는 어셈블리 수준 특성이 무시됩니다.

참고 항목

작업

방법: 사용자 지정 특성 정의

방법: 강력한 이름으로 어셈블리 서명

개념

특성의 적용

어셈블리 보안 고려 사항

참조

강력한 이름 도구(Sn.exe)

파일 서명 도구(Signcode.exe)

프로젝트 디자이너, 서명 페이지

어셈블리 정보 대화 상자

기타 리소스

Visual Basic의 사용자 지정 특성

응용 프로그램 속성 관리

어셈블리 및 매니페스트 서명 관리