강력한 이름의 어셈블리Strong-named assemblies

강력한 이름의 어셈블리는 어셈블리에 대한 고유한 ID를 만들어 어셈블리 충돌을 방지할 수 있습니다.Strong-naming an assembly creates a unique identity for the assembly, and can prevent assembly conflicts.

강력한 이름의 어셈블리를 만드는 방법은?What makes a strong-named assembly?

강력한 이름의 어셈블리는 어셈블리와 함께 배포된 퍼블릭 키에 대응하는 프라이빗 키와 어셈블리 자체를 사용하여 생성됩니다.A strong named assembly is generated by using the private key that corresponds to the public key distributed with the assembly, and the assembly itself. 어셈블리에는 어셈블리를 구성하는 모든 파일의 이름과 해시가 포함된 어셈블리 매니페스트가 포함되어 있습니다.The assembly includes the assembly manifest, which contains the names and hashes of all the files that make up the assembly. 같은 강력한 이름을 가진 어셈블리는 동일합니다.Assemblies that have the same strong name should be identical.

Visual Studio나 명령줄 도구를 사용하여 강력한 이름의 어셈블리를 만들 수 있습니다.You can strong-name assemblies by using Visual Studio or a command-line tool. 자세한 내용은 방법: 강력한 이름으로 어셈블리 서명 또는 Sn.exe(강력한 이름 도구)를 참조하세요.For more information, see How to: Sign an assembly with a strong name or Sn.exe (Strong Name tool).

강력한 이름의 어셈블리가 만들어지면 그 어셈블리에는 어셈블리에 대한 간단한 텍스트 이름, 버전 번호, 문화권 정보(제공된 경우), 디지털 서명 및 서명에 사용된 프라이빗 키에 대응하는 퍼블릭 키가 포함되어 있습니다.When a strong-named assembly is created, it contains the simple text name of the assembly, the version number, optional culture information, a digital signature, and the public key that corresponds to the private key used for signing.

경고

강력한 이름을 보안용으로 사용하지 마세요.Do not rely on strong names for security. 강력한 이름은 고유한 ID를 제공할 뿐입니다.They provide a unique identity only.

강력한 이름의 어셈블리를 사용해야 하는 이유는?Why strong-name your assemblies?

강력한 이름의 어셈블리를 참조하면 버전 관리나 이름 보호와 같은 이점이 있습니다.When you reference a strong-named assembly, you can expect certain benefits, such as versioning and naming protection. .NET Framework에서 강력한 이름의 어셈블리는 일부 시나리오를 수행하는 데 필요한 전역 어셈블리 캐시에 설치할 수 있습니다.In the .NET Framework, strong-named assemblies can be installed in the global assembly cache, which is required to enable some scenarios.

강력한 이름의 어셈블리는 다음과 같은 시나리오에 유용합니다.Strong-named assemblies are useful in the following scenarios:

  • 강력한 이름의 어셈블리가 어셈블리를 참조할 수 있도록 설정하거나 다른 강력한 이름의 어셈블리에서 어셈블리에 대해 friend 액세스 권한을 제공하려는 경우You want to enable your assemblies to be referenced by strong-named assemblies, or you want to give friend access to your assemblies from other strong-named assemblies.

  • 앱이 동일 어셈블리의 다른 버전에 액세스해야 하는 경우.An app needs access to different versions of the same assembly. 즉, 같은 앱 도메인 내에서 여러 어셈블리 버전을 충돌 없이 함께 로드해야 하는 경우입니다.This means you need different versions of an assembly to load side by side in the same app domain without conflict. 예를 들어 여러 API 확장이 단순한 동일 이름의 어셈블리에 존재하는 경우 강력한 이름을 통해 각 어셈블리 버전에 대한 고유 ID가 제공됩니다.For example, if different extensions of an API exist in assemblies that have the same simple name, strong-naming provides a unique identity for each version of the assembly.

  • 어셈블리를 사용하는 앱의 성능 저하를 방지하기 위해 어셈블리를 도메인 중립으로 설정하려는 경우.You do not want to negatively affect performance of apps using your assembly, so you want the assembly to be domain neutral. 도메인 중립 어셈블리는 전역 어셈블리 캐시에 설치해야 하므로 이렇게 하려면 강력한 이름을 지정해야 합니다.This requires strong-naming because a domain-neutral assembly must be installed in the global assembly cache.

  • 게시자 정책을 적용하여 앱 서비스를 한 위치에서 제공하려면 어셈블리를 전역 어셈블리 캐시에 설치해야 합니다.You want to centralize servicing for your app by applying publisher policy, which means the assembly must be installed in the global assembly cache.

강력한 이름의 어셈블리가 제공하는 ID 이점을 원하는 오픈 소스 개발자의 경우 어셈블리와 연관된 프라이빗 키를 소스 제어 시스템에 체크 인할 수 있습니다.If you are an open-source developer and you want the identity benefits of a strong-named assembly, consider checking in the private key associated with an assembly to your source control system.

참조See also