Global Assembly CacheGlobal Assembly Cache

Ogni computer in cui è installato Common Language Runtime ha una cache di codice a livello di computer detta Global Assembly Cache.Each computer where the Common Language Runtime is installed has a machine-wide code cache called the Global Assembly Cache. La Global Assembly Cache archivia gli assembly specificamente designati per essere condivisi da più applicazioni nel computer.The Global Assembly Cache stores assemblies specifically designated to be shared by several applications on the computer.

Per condividere gli assembly è opportuno installarli nella Global Assembly Cache solo quando è necessario.You should share assemblies by installing them into the Global Assembly Cache only when you need to. Come regola generale, mantenere le dipendenze degli assembly private e individuare gli assembly nella directory dell'applicazione, a meno che la condivisione di un assembly non venga richiesta in modo esplicito.As a general guideline, keep assembly dependencies private, and locate assemblies in the application directory unless sharing an assembly is explicitly required. Non è inoltre necessario installare gli assembly nella Global Assembly Cache per renderli accessibili al codice non gestito o all'interoperabilità COM.In addition, it is not necessary to install assemblies into the Global Assembly Cache to make them accessible to COM interop or unmanaged code.

Nota

Esistono scenari in cui si sceglie in modo esplicito di non installare un assembly nella Global Assembly Cache.There are scenarios where you explicitly do not want to install an assembly into the Global Assembly Cache. Se si inserisce uno degli assembly che costituiscono un'applicazione nella Global Assembly Cache, non sarà più possibile replicare o installare l'applicazione usando il comando xcopy per copiare la directory dell'applicazione.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. È necessario spostare anche l'assembly nella Global Assembly Cache.You must move the assembly in the Global Assembly Cache as well.

Esistono due modi per implementare un assembly nella Global Assembly Cache:There are two ways to deploy an assembly into the Global Assembly Cache:

  • Usare un programma di installazione progettato per funzionare con la Global Assembly Cache.Use an installer designed to work with the Global Assembly Cache. Questa è l'opzione preferita per l'installazione degli assembly nella Global Assembly Cache.This is the preferred option for installing assemblies into the Global Assembly Cache.

  • Usare uno strumento per sviluppatori denominato strumento Global Assembly Cache (Gacutil.exe), disponibile con 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).

    Nota

    Ai fini della distribuzione, per installare gli assembly nella Global Assembly Cache è necessario usare Windows Installer.In deployment scenarios, use Windows Installer to install assemblies into the Global Assembly Cache. Usare lo strumento Global Assembly Cache solo in scenari di sviluppo, poiché non prevede il conteggio dei riferimenti di assembly né altre funzionalità disponibili con il programma di installazione di Windows.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 partire da .NET Framework 4, il percorso predefinito della Global Assembly Cache è %windir%\Microsoft.NET\assembly.Starting with the .NET Framework 4, the default location for the Global Assembly Cache is %windir%\Microsoft.NET\assembly. Nelle versioni precedenti di .NET Framework, il percorso predefinito è %windir%\assembly.In earlier versions of the .NET Framework, the default location is %windir%\assembly.

Gli amministratori spesso proteggono la directory Systemroot usando un elenco di controllo di accesso (ACL) per controllare l'accesso in scrittura ed esecuzione.Administrators often protect the systemroot directory using an access control list (ACL) to control write and execute access. Poiché la Global Assembly Cache viene installata in una sottodirectory della directory Systemroot, eredita l'ACL di tale directory.Because the Global Assembly Cache is installed in a subdirectory of the systemroot directory, it inherits that directory's ACL. È consigliabile che solo gli utenti con privilegi di amministratore siano autorizzati a eliminare file dalla Global Assembly Cache.It is recommended that only users with Administrator privileges be allowed to delete files from the Global Assembly Cache.

Gli assembly implementati nella Global Assembly Cache devono avere un nome sicuro.Assemblies deployed in the Global Assembly Cache must have a strong name. Quando si aggiunge un assembly alla Global Assembly Cache, vengono eseguiti controlli di integrità su tutti i file che compongono l'assembly.When an assembly is added to the Global Assembly Cache, integrity checks are performed on all files that make up the assembly. La cache esegue questi controlli di integrità per garantire che un assembly non sia stato manomesso, ad esempio quando un file è stato modificato ma il manifesto non riflette la modifica.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.

Vedere ancheSee Also

Assembly in Common Language RuntimeAssemblies in the Common Language Runtime
Uso di assembly e della Global Assembly CacheWorking with Assemblies and the Global Assembly Cache
Assembly con nomi sicuriStrong-Named Assemblies