다음을 통해 공유


강력한 이름의 어셈블리

어셈블리의 강력한 이름 지정은 어셈블리에 대한 고유 ID를 만들고 어셈블리 충돌을 방지할 수 있습니다.

강력한 이름을 가진 어셈블리는 무엇으로 구성되나요?

강력한 명명된 어셈블리는 어셈블리와 함께 배포된 공개 키와 어셈블리 자체에 해당하는 프라이빗 키를 사용하여 생성됩니다. 어셈블리에는 어셈블리를 구성하는 모든 파일의 이름과 해시가 포함된 어셈블리 매니페스트가 포함됩니다. "강력한 이름을 가진 어셈블리는 동일해야 합니다."

Visual Studio 또는 명령줄 도구를 사용하여 어셈블리에 강력한 이름을 지정할 수 있습니다. 자세한 내용은 방법: 강력한 이름 또는Sn.exe 사용하여 어셈블리 서명 (강력한 이름 도구)을 참조하세요.

강력한 이름의 어셈블리를 만들면 어셈블리의 단순 텍스트 이름, 버전 번호, 선택적 문화권 정보, 디지털 서명 및 서명에 사용되는 프라이빗 키에 해당하는 공개 키가 포함됩니다.

경고

보안을 위해 강력한 이름을 사용하지 마세요. 고유한 ID만 제공합니다.

어셈블리의 이름을 강력한 이름으로 지정하는 이유는 무엇인가요?

.NET Framework의 경우 강력한 이름의 어셈블리는 다음 시나리오에서 유용합니다.

  • 귀하의 어셈블리가 강력한 이름의 어셈블리에서 참조될 수 있도록 설정하거나, 다른 강력한 이름의 어셈블리가 귀하의 어셈블리에 액세스할 수 있도록 friend 권한을 부여하려고 합니다.

  • 앱은 동일한 어셈블리의 다른 버전에 액세스해야 합니다. 즉, 충돌 없이 동일한 앱 도메인에서 나란히 로드하려면 다른 버전의 어셈블리가 필요합니다. 예를 들어 간단한 이름이 동일한 어셈블리에 API의 다른 확장이 있는 경우 강력한 명명은 어셈블리의 각 버전에 대해 고유한 ID를 제공합니다.

  • 어셈블리를 사용하는 앱의 성능에 부정적인 영향을 미치지 않으므로 어셈블리가 도메인 중립이 되도록 합니다. 전역 어셈블리 캐시에 도메인 중립 어셈블리를 설치해야 하므로 강력한 이름을 지정해야 합니다.

  • 게시자 정책을 적용하여 앱에 대한 서비스를 중앙 집중화하려고 합니다. 즉, 어셈블리를 전역 어셈블리 캐시에 설치해야 합니다.

.NET Core 및 .NET 5 이상의 경우 강력한 이름의 어셈블리는 중요한 이점을 제공하지 않습니다. 런타임은 강력한 이름 서명의 유효성을 검사하지 않으며 어셈블리 바인딩에 강력한 이름을 사용하지도 않습니다.

오픈 소스 개발자이고 .NET Framework와의 호환성을 높이기 위해 강력한 이름의 어셈블리의 ID 이점을 원하는 경우 어셈블리와 연결된 프라이빗 키를 소스 제어 시스템에 체크 인하는 것이 좋습니다.

참고하십시오