비고
이 문서는 .NET Framework에만 적용됩니다. .NET 6 이상 버전을 포함하여 .NET의 최신 구현에는 적용되지 않습니다.
여러 애플리케이션 간에 어셈블리를 공유하려는 경우 전역 어셈블리 캐시에 설치할 수 있습니다. 공용 언어 런타임이 설치된 각 컴퓨터에는 이 컴퓨터 전체 코드 캐시가 있습니다. 전역 어셈블리 캐시는 컴퓨터의 여러 애플리케이션에서 공유하도록 특별히 지정된 어셈블리를 저장합니다. 전역 어셈블리 캐시에 설치하려면 어셈블리에 강력한 이름이 있어야 합니다.
비고
전역 어셈블리 캐시에 배치된 어셈블리는 동일한 어셈블리 이름과 파일 이름(파일 이름 확장명 포함 안 됨)을 가져야 합니다. 예를 들어 myAssembly의 어셈블리 이름을 가진 어셈블리에는 myAssembly.exe 또는 myAssembly.dll파일 이름이 있어야 합니다.
필요한 경우에만 어셈블리를 전역 어셈블리 캐시에 설치하여 공유해야 합니다. 일반적으로 어셈블리 공유가 명시적으로 필요하지 않은 경우 어셈블리 종속성을 비공개로 유지하고 애플리케이션 디렉터리에서 어셈블리를 찾습니다. 또한 COM interop 또는 관리되지 않는 코드에 액세스할 수 있도록 어셈블리를 전역 어셈블리 캐시에 설치할 필요가 없습니다.
어셈블리를 전역 어셈블리 캐시에 설치하려는 몇 가지 이유가 있습니다.
공유 위치입니다.
애플리케이션에서 사용해야 하는 어셈블리는 전역 어셈블리 캐시에 넣을 수 있습니다. 예를 들어 모든 애플리케이션이 전역 어셈블리 캐시에 있는 어셈블리를 사용해야 하는 경우 어셈블리에 대한 참조를 리디렉션하는 Machine.config 파일에 버전 정책 문을 추가할 수 있습니다.
파일 보안.
관리자는 쓰기 및 실행 액세스를 제어하기 위해 ACL(액세스 제어 목록)을 사용하여 systemroot 디렉터리를 보호하는 경우가 많습니다. 전역 어셈블리 캐시는 systemroot 디렉터리에 설치되므로 해당 디렉터리의 ACL을 상속합니다. 관리자 권한이 있는 사용자만 전역 어셈블리 캐시에서 파일을 삭제할 수 있도록 하는 것이 좋습니다.
병렬 버전 관리.
이름이 같지만 버전 정보가 다른 어셈블리의 여러 복사본은 전역 어셈블리 캐시에서 유지 관리할 수 있습니다.
추가 검색 위치입니다.
공용 언어 런타임은 구성 파일에서 코드베이스 정보를 검색하거나 사용하기 전에 어셈블리 요청과 일치하는 어셈블리에 대한 전역 어셈블리 캐시를 확인합니다.
전역 어셈블리 캐시에 어셈블리를 명시적으로 설치하지 않고자 하는 시나리오가 있습니다. 애플리케이션을 구성하는 어셈블리 중 하나를 전역 어셈블리 캐시에 배치하는 경우 XCOPY를 사용하여 애플리케이션 디렉터리를 복사하여 더 이상 애플리케이션을 복제하거나 설치할 수 없습니다. 이 경우 어셈블리를 전역 어셈블리 캐시로 이동해야 합니다.
이 섹션 안에
방법: 전역 어셈블리 캐시에 어셈블리 설치 전역 어셈블리 캐시에 어셈블리를 설치하는 방법을 설명합니다.
방법: 전역 어셈블리 캐시의 내용 보기Gacutil.exe(전역 어셈블리 캐시 도구)를 사용하여 전역 어셈블리 캐시의 내용을 보는 방법을 설명합니다.
방법: 전역 어셈블리 캐시에서 어셈블리 제거Gacutil.exe(전역 어셈블리 캐시 도구)를 사용하여 전역 어셈블리 캐시에서 어셈블리를 제거하는 방법을 설명합니다.
전역 어셈블리 캐시와 함께 Serviced 구성 요소 사용 서비스된 구성 요소(관리되는 COM+ 구성 요소)를 전역 어셈블리 캐시에 배치해야 하는 이유를 설명합니다.
관련 섹션
어셈블리 만들기 어셈블리 만들기에 대한 개요를 제공합니다.
전역 어셈블리 캐시 전역 어셈블리 캐시에 대해 설명합니다.
방법: 어셈블리 내용 보기Ildasm.exe(IL 디스어셈블러)를 사용하여 어셈블리에서 CIL(공용 중간 언어) 정보를 보는 방법을 설명합니다.
런타임에서 어셈블리를 찾는 방법 공용 언어 런타임이 애플리케이션을 구성하는 어셈블리를 찾아서 로드하는 방법을 설명합니다.
어셈블리를 사용한 프로그래밍 관리되는 애플리케이션의 구성 요소인 어셈블리에 대해 설명합니다.
.NET