본문 바로가기

Programming/.NET

[.NET] 강력한 이름

강력한 이름

 

강력한 이름은 COM 지옥 혹은 DLL 지옥이라고 불리는 COM에서의 dll 버전 관리에 대한 방법으로 .NET에 등장했습니다.
이전에도 설명했지만 기존 COM의 경우 DLL명이 같으면 서로 다른 버전이라도 하나의 이름만 사용해야 하는 문제로 많은 고통을 주었습니다. 이런 문제를 해결하는 방법인 것이죠. 

.NET을 기반으로 하는 개발자라면 굳이 강력한 이름이라는 명칭을 몰라도 이미 사용하고 있을 것입니다.
혹시나 어떤 것인지 궁금하신 분들은 전역 어셈블리 캐쉬(C:\Windows\assembly)에 가보시면 동일한 이름의 수많은 공용 어셈블리 파일들을 많이 확인하실 수 있습니다.

(.NET 4.0 부터 전역 어셈블리 캐쉬의 위치는 바뀌었습니다. -> %windir%\Microsoft.NET\assembly)


이러한 파일들이 강력한 이름을 사용한 파일들입니다.
아래 사진의 경우 어셈블리 이름, 버전이 동일하지만 문화권이 다르게 설정된 것을 확인하실 수 있습니다.
짐작컨데 이 파일들은 같은 내용의 파일이지만 언어별로 다르게 지정되었다는 것을 알 수 있습니다.

전역 어셈블리 캐쉬


강력한 이름은 크게 이름(파일명), 버전, 문화권, 공개키 등으로 구성되며 이 중 하나라도 다를 경우 배포가 가능합니다.
특히 위 사진처럼 동일한 내용의 파일이지만 사용 언어권에 의해 언어가 다른 경우 동일한 이름으로 배포할 수 있다는 점에서
DLL배포의 용이성이 생긴 것입니다.
(강력한 이름을 사용하여 배포한 전역 어셈블리는 제작한 DLL이 배포된 것입니다.)

 

참조: https://docs.microsoft.com/ko-kr/dotnet/standard/assembly/strong-named

'Programming > .NET' 카테고리의 다른 글

[.NET] .NET 리플렉션  (0) 2020.01.14
[.NET] .NET 어셈블리(어셈블리의 구성)  (0) 2020.01.11
[.NET] .NET 어셈블리(어셈블리의 종류)  (0) 2020.01.10
[.NET] CLR, CTS와 CLS  (0) 2020.01.06
[.NET] .NET이란  (0) 2020.01.05