Cache de assemblies globalGlobal Assembly Cache

Cada computador em que o Common Language Runtime está instalado tem um cache de código em todo o computador chamado Cache de Assembly Global.Each computer where the Common Language Runtime is installed has a machine-wide code cache called the Global Assembly Cache. O Cache de Assembly Global armazena assemblies projetados especificamente para serem compartilhados por vários aplicativos no computador.The Global Assembly Cache stores assemblies specifically designated to be shared by several applications on the computer.

Você deverá compartilhar assemblies instalando-os no Cache de Assembly Global somente quando precisar.You should share assemblies by installing them into the Global Assembly Cache only when you need to. Como diretriz geral, mantenha as dependências de um assembly privadas e localize os assemblies no diretório de aplicativo, a menos que o compartilhamento de um assembly seja explicitamente obrigatório.As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required. Além disso, não é necessário instalar assemblies no Cache de Assembly Global a fim de torná-los acessíveis para interoperabilidade COM ou código não gerenciado.In addition, it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop or unmanaged code.

Observação

Há cenários em que você explicitamente não deseja instalar um assembly no Cache de Assembly Global.There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. Se você colocar um dos assemblies que compõem um aplicativo no Cache de Assembly Global, não poderá mais replicar nem instalar o aplicativo usando o comando xcopy para copiar o diretório de aplicativo.If you place one of the assemblies that make up an application in the Global Assembly Cache, you can no longer replicate or install the application by using the xcopy command to copy the application directory. Você também deve mover o assembly no Cache de Assembly Global.You must move the assembly in the Global Assembly Cache as well.

Há duas maneiras de implantar um assembly no Cache de Assembly Global:There are two ways to deploy an assembly into the Global Assembly Cache:

  • Usar um instalador projetado para funcionar com o Cache de Assembly Global.Use an installer designed to work with the Global Assembly Cache. Essa é a opção preferencial para instalar assemblies no Cache de Assembly Global.This is the preferred option for installing assemblies into the Global Assembly Cache.

  • Use uma ferramenta de desenvolvedor chamada Global Assembly Cache (Gacutil.exe), fornecida pelo Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).Use a developer tool called the Global Assembly Cache tool (Gacutil.exe), provided by the Windows Software Development Kit (SDK)Windows Software Development Kit (SDK).

    Observação

    Em cenários de implantação, use o Windows Installer para instalar assemblies no Cache de Assembly Global.In deployment scenarios, use Windows Installer to install assemblies into the Global Assembly Cache. Só use a ferramenta Global Assembly Cache em cenários de desenvolvimento, porque ela não fornece contagem de referência de assembly e outros recursos fornecidos durante o uso do Windows Installer.Use the Global Assembly Cache tool only in development scenarios, because it does not provide assembly reference counting and other features provided when using the Windows Installer.

A partir do .NET Framework 4, a localização padrão do Cache de Assembly Global é %windir%\Microsoft.NET\assembly.Starting with the .NET Framework 4, the default location for the Global Assembly Cache is %windir%\Microsoft.NET\assembly. Em versões anteriores do .NET Framework, o local padrão era %windir%\assembly.In earlier versions of the .NET Framework, the default location is %windir%\assembly.

Os administradores geralmente protegem o diretório systemroot usando uma ACL (lista de controle de acesso) para controlar acesso de escrita e execução.Administrators often protect the systemroot directory using an access control list (ACL) to control write and execute access. Como o Cache de Assembly Global é instalado em um subdiretório do diretório systemroot, ele herda a ACL desse diretório.Because the Global Assembly Cache is installed in a subdirectory of the systemroot directory, it inherits that directory's ACL. É recomendável que apenas usuários com privilégios de Administrador tenham permissão para excluir arquivos do Cache de Assembly Global.It is recommended that only users with Administrator privileges be allowed to delete files from the Global Assembly Cache.

Assemblies implantados no Cache de Assembly Global devem ter um nome forte.Assemblies deployed in the Global Assembly Cache must have a strong name. Quando um assembly é adicionado ao Cache de Assembly Global, são executadas verificações de integridade em todos os arquivos que compõem o assembly.When an assembly is added to the Global Assembly Cache, integrity checks are performed on all files that make up the assembly. O cache executa essas verificações de integridade para garantir que um assembly não tenha sido adulterado, por exemplo, quando um arquivo é alterado, mas o manifesto não reflete a alteração.The cache performs these integrity checks to ensure that an assembly has not been tampered with, for example, when a file has changed but the manifest does not reflect the change.

Consulte tambémSee also