다음을 통해 공유


CA2210: 어셈블리에는 올바른 강력한 이름을 사용해야 합니다.

TypeName

AssembliesShouldHaveValidStrongNames

CheckId

CA2210

범주

Microsoft.Design

변경 수준

주요 변경 아님

원인

어셈블리가 강력한 이름으로 서명되어 있지 않거나, 강력한 이름을 확인할 수 없거나, 컴퓨터의 현재 레지스트리 설정이 없어서 강력한 이름이 유효하지 않습니다.

규칙 설명

이 규칙에서는 어셈블리의 강력한 이름을 검색하고 확인합니다. 다음 중 하나에 해당되는 경우 위반이 발생합니다.

  • 어셈블리에 강력한 이름이 없는 경우

  • 서명 후 어셈블리가 변경된 경우

  • 어셈블리의 서명이 연기된 경우

  • 어셈블리가 잘못 서명되었거나 서명이 실패한 경우

  • 어셈블리가 확인 과정을 통과하는 데 레지스트리 설정이 필요한 경우. 예를 들면, 어셈블리 확인 과정을 건너뛰기 위해 강력한 이름 도구(Sn.exe)가 사용된 경우

강력한 이름은 클라이언트에서 무단으로 변경된 어셈블리를 모르는 사이에 로드하지 못하도록 보호합니다. 강력한 이름이 없는 어셈블리는 극히 제한된 시나리오 이외에는 배포하면 안 됩니다. 제대로 서명되지 않은 어셈블리를 공유하거나 배포하면 어셈블리가 무단으로 변경되거나, 공용 언어 런타임에서 어셈블리를 로드할 수 없거나, 사용자가 자신의 컴퓨터에서 확인을 사용하지 못하게 될 수 있습니다. 강력한 이름이 없는 어셈블리에는 다음과 같은 단점이 있습니다.

  • 원본을 확인할 수 없습니다.

  • 어셈블리의 내용이 변경된 경우 공용 언어 런타임에서 사용자에게 경고할 수 없습니다.

  • 전역 어셈블리 캐시에 로드할 수 없습니다.

서명이 연기된 어셈블리를 로드하고 분석하려면 어셈블리 확인을 사용하지 않아야 합니다.

위반 문제를 해결하는 방법

키 파일을 만들려면

다음 절차 중 하나를 사용합니다.

Visual Studio에서 강력한 이름으로 어셈블리에 서명하려면

  1. Visual Studio에서 솔루션을 엽니다.

  2. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

  3. 서명 탭을 클릭하고 어셈블리 서명 확인란을 선택합니다.

  4. 강력한 이름 키 파일 선택에서 새로 만들기를 선택합니다.

    강력한 이름 키 만들기 창이 표시됩니다.

  5. 강력한 이름 키의 이름을 키 파일 이름에 입력합니다.

  6. 암호로 키를 보호할지 여부를 선택하고 확인을 클릭합니다.

  7. 솔루션 탐색기에서 프로젝트를 오른쪽 마우스 단추로 클릭하고 빌드를 클릭합니다.

Visual Studio 밖에서 강력한 이름으로 어셈블리에 서명하려면

  • .NET Framework SDK에서 제공하는 강력한 이름 도구(Sn.exe)를 사용합니다. 자세한 내용은 Sn.exe(강력한 이름 도구)을 참조하십시오.

경고를 표시하지 않는 경우

무단으로 내용을 변경해도 괜찮은 환경에서 어셈블리를 사용하는 경우에만 이 규칙에서 경고를 표시하지 마십시오.

참고 항목

작업

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

참조

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

System.Reflection.AssemblyKeyFileAttribute

System.Reflection.AssemblyKeyNameAttribute