다음을 통해 공유


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

업데이트: 2007년 11월

Windows SDK(소프트웨어 개발 키트)에서는 몇 가지 방법을 사용하여 강력한 이름으로 어셈블리에 서명할 수 있습니다.

  • Windows SDK에서 제공되는 어셈블리 링커(Al.exe)를 사용할 수 있습니다.

  • 어셈블리 특성을 사용하여 강력한 이름 정보를 코드에 삽입할 수 있습니다. 사용할 키 파일의 위치에 따라 AssemblyKeyFileAttribute 또는 AssemblyKeyNameAttribute를 사용할 수 있습니다.

    참고:

    .NET Framework 버전 2.0에서는 특성을 사용할 때 몇 가지 컴파일 문제 경고 메시지가 나타납니다.

  • C# 및 Visual Basic의 경우 /keyfile 또는 /delaysign과 같은 컴파일 옵션을 사용하거나 C++의 경우 /KEYFILE 또는 /DELAYSIGN 링커 옵션을 사용할 수 있습니다. 서명 연기에 대한 자세한 내용은 어셈블리 서명 연기를 참조하십시오.

참고:

Visual Studio 2005에서는 개발 환경에서 제공되는 어셈블리 서명 도구를 사용할 수 있습니다. 어셈블리 및 매니페스트 서명 관리프로젝트 디자이너, 서명 페이지를 참조하십시오.

강력한 이름으로 어셈블리를 서명하려면 암호화 키 쌍이 있어야 합니다. 키 쌍 만들기에 대한 자세한 내용은 방법: 공개/개인 키 쌍 만들기를 참조하십시오.

어셈블리 링커를 사용하여 강력한 이름으로 어셈블리를 만들고 서명하려면

  • 명령 프롬프트에 다음과 같이 입력합니다.

    al/out:<assembly name> <module name>/keyfile:<file name>

    이 명령에서 assembly name은 강력한 이름으로 서명할 어셈블리의 이름이고, module name은 어셈블리를 만드는 데 사용되는 코드 모듈의 이름이고, file name은 키 쌍이 포함된 컨테이너 또는 파일의 이름입니다.

다음 예제는 키 쌍 파일 sgKey.snk를 사용하여 강력한 이름으로 어셈블리 MyAssembly.dll을 서명할 수 있습니다.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

특성을 사용하여 강력한 이름으로 어셈블리를 서명하려면

  • 강력한 이름으로 어셈블리를 서명하는 경우, AssemblyKeyFileAttribute 또는 AssemblyKeyNameAttribute를 코드 모듈에 추가하면 사용할 키 쌍이 포함된 컨테이너 또는 파일의 이름을 지정할 수 있습니다.

다음 코드 예제에서는 어셈블리가 컴파일된 디렉터리에 있는 sgKey.snk라는 키 파일과 함께 AssemblyKeyFileAttribute를 사용합니다. 이 경우 명령줄 컴파일러 vbc.exe 및 csc.exe를 사용하여 어셈블리가 컴파일되었다고 가정합니다.

<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
참고:

Visual Studio와 같은 개발 환경에서는 어셈블리가 프로젝트 디렉터리에서 컴파일되지 않을 수 있습니다. 예를 들어, 일부 버전의 Visual Studio는 bin\Debug 하위 디렉터리의 C# 프로젝트를 컴파일합니다. 이 경우 코드 예제의 경로는 "..\\..\\sgKey.snk"가 됩니다. Visual Studio 2005에서 C#에 대한 키 파일은 프로젝트 설정에서 지정할 수 있습니다.

또한 컴파일을 수행하는 경우 서명을 연기할 수 있습니다. 자세한 내용은 어셈블리 서명 연기를 참조하십시오.

강력한 이름으로 어셈블리를 서명하는 경우 어셈블리 링커(Al.exe)는 현재 디렉터리 및 출력 디렉터리와 관련된 키 파일을 검색합니다. 명령줄 컴파일러를 사용하는 경우에는, 코드 모듈이 포함된 현재 디렉터리에 키를 복사하기만 하면 됩니다.

참고 항목

작업

방법: 공개/개인 키 쌍 만들기

개념

어셈블리 서명 연기

참조

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

기타 리소스

강력한 이름의 어셈블리 만들기 및 사용

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