강력한 이름의 어셈블리
강력한 이름은 간단한 텍스트 이름, 버전 번호 및 문화권 정보(제공되는 경우)를 포함하는 어셈블리 ID와 공개 키 및 디지털 서명으로 이루어집니다. 전용 키를 사용하여 어셈블리 파일에서 생성됩니다. 어셈블리 파일에는 어셈블리 매니페스트가 포함되고, 어셈블리 매니페스트에는 어셈블리를 구성하는 모든 파일의 이름 및 해시가 포함됩니다. Microsoft® Visual Studio® .NET 및 Windows SDK(소프트웨어 개발 키트)에서 제공하는 다른 개발 도구를 사용하여 어셈블리에 강력한 이름을 지정할 수도 있습니다. 강력한 이름이 일치하는 어셈블리는 동일한 것으로 간주됩니다.
어셈블리에 강력한 이름을 서명함으로써 해당 이름이 전역에서 고유하다는 것을 보증할 수 있습니다. 강력한 이름은 다음 요구 사항을 만족시킵니다.
강력한 이름은 고유한 키 쌍에 기반한 고유한 이름을 갖습니다. 따라서 어셈블리에 서로 다른 전용 키를 사용하면 생성되는 이름도 달라지므로 그 누구도 특정 사용자가 생성한 어셈블리와 동일한 이름을 갖는 어셈블리를 생성하지 못합니다.
강력한 이름은 어셈블리의 버전 계보를 보호합니다. 강력한 이름을 사용하면 그 누구도 사용자의 어셈블리의 다른 버전을 만들지 못합니다. 따라서 사용자는, 로드되는 어셈블리의 버전이 응용 프로그램 빌드 시 사용된 버전과 동일한 게시자에서 가져온 것임을 알 수 있습니다.
강력한 이름은 강력한 무결성 검사를 제공합니다. .NET Framework 보안 검사를 수행함으로써 어셈블리가 처음 빌드된 이후에 어셈블리의 내용이 변경되지 않았다는 것을 확인할 수 있습니다. 그러나 강력한 이름 자체가 디지털 서명이나 인증서에서 제공되는 것과 같은 일정 수준의 신뢰도를 나타내지는 않습니다.
강력한 이름의 어셈블리를 참조하면 버전 관리나 이름 보호와 같은 이점이 있습니다. 강력한 이름의 어셈블리가 단순한 이름을 갖는 어셈블리(버전 관리나 이름 보호 이점이 없는 어셈블리)를 참조하면, 강력한 이름의 어셈블리를 사용했을 때의 이점은 없어지고 DLL 충돌이 발생합니다. 따라서 강력한 이름의 어셈블리는 다른 강력한 이름의 어셈블리만 참조해야 합니다.