다음을 통해 공유


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

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를 코드 모듈에 추가하면 사용할 키 쌍이 포함된 컨테이너 또는 파일의 이름을 지정할 수 있습니다.

다음 코드 예제에서는 어셈블리가 컴파일된 디렉터리에 있는 keyfile.snk라는 키 파일과 함께 AssemblyKeyFileAttribute를 사용합니다.

<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
참고참고

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

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

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

참고 항목

작업

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

참조

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

개념

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

어셈블리 서명 연기

기타 리소스

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