비고
이 문서는 .NET Framework에만 적용됩니다. .NET 6 이상 버전을 포함하여 .NET의 최신 구현에는 적용되지 않습니다.
공용 언어 런타임이 설치된 각 컴퓨터에는 전역 어셈블리 캐시라는 컴퓨터 전체 코드 캐시가 있습니다. 전역 어셈블리 캐시는 컴퓨터의 여러 애플리케이션에서 공유하도록 특별히 지정된 어셈블리를 저장합니다.
필요한 경우에만 어셈블리를 전역 어셈블리 캐시에 설치하여 공유해야 합니다. 일반적으로 어셈블리를 공유해야 하는 경우가 아니면 어셈블리 종속성을 비공개로 유지하고 애플리케이션 디렉터리에서 어셈블리를 찾습니다. 또한 COM interop 또는 비관리 코드에서 액세스할 수 있도록 어셈블리를 전역 어셈블리 캐시에 설치할 필요는 없습니다.
비고
전역 어셈블리 캐시에 어셈블리를 명시적으로 설치하지 않으려는 시나리오가 있습니다. 애플리케이션을 구성하는 어셈블리 중 하나를 전역 어셈블리 캐시에 배치하는 경우 xcopy 명령을 사용하여 애플리케이션 디렉터리를 복사하여 더 이상 애플리케이션을 복제하거나 설치할 수 없습니다. 전역 어셈블리 캐시에서도 어셈블리를 이동해야 합니다.
전역 어셈블리 캐시에 어셈블리를 배포하는 방법에는 두 가지가 있습니다.
전역 어셈블리 캐시와 호환되도록 설계된 설치 프로그램을 사용하세요. 전역 어셈블리 캐시에 어셈블리를 설치하기 위한 선호되는 옵션입니다.
Windows SDK에서 제공하는 전역 어셈블리 캐시 도구(Gacutil.exe)라는 개발자 도구를 사용합니다.
비고
배포 시나리오에서 Windows Installer를 사용하여 전역 어셈블리 캐시에 어셈블리를 설치합니다. 전역 어셈블리 캐시 도구는 Windows Installer를 사용할 때 제공되는 어셈블리 참조 계산 및 기타 기능을 제공하지 않으므로 개발 시나리오에서만 사용합니다.
.NET Framework 4부터 전역 어셈블리 캐시의 기본 위치는 %windir%\Microsoft.NET\assembly입니다. 이전 버전의 .NET Framework에서는 기본 위치가 %windir%\assembly입니다.
관리자는 쓰기 및 실행 액세스를 제어하기 위해 ACL(액세스 제어 목록)을 사용하여 systemroot 디렉터리를 보호하는 경우가 많습니다. 전역 어셈블리 캐시는 systemroot 디렉터리의 하위 디렉터리에 설치되므로 해당 디렉터리의 ACL을 상속합니다. 관리자 권한이 있는 사용자만 전역 어셈블리 캐시에서 파일을 삭제할 수 있도록 하는 것이 좋습니다.
전역 어셈블리 캐시에 배포된 어셈블리에는 강력한 이름이 있어야 합니다. 어셈블리가 전역 어셈블리 캐시에 추가되면 어셈블리를 구성하는 모든 파일에서 무결성 검사가 수행됩니다. 캐시는 이러한 무결성 검사를 수행하여 파일이 변경되었지만 매니페스트에 변경 내용이 반영되지 않는 경우와 같이 어셈블리가 변조되지 않았는지 확인합니다.
참고하십시오
.NET