Condividi tramite


Global Assembly Cache

Annotazioni

Questo articolo è specifico di .NET Framework. Non si applica alle implementazioni più recenti di .NET, incluse .NET 6 e versioni successive.

Ogni computer in cui è installato Common Language Runtime ha una cache di codice a livello di computer denominata Global Assembly Cache. Global Assembly Cache archivia gli assembly designati specificamente per essere condivisi da diverse applicazioni nel computer.

È consigliabile condividere gli assembly installandoli nella Global Assembly Cache solo quando è necessario. Come linea guida generale, mantenere private le dipendenze dell'assembly e individuare gli assembly nella directory dell'applicazione, a meno che non sia richiesta esplicitamente la condivisione di un assembly. Inoltre, non è necessario installare assembly nella Global Assembly Cache per renderli accessibili all'interoperabilità COM o al codice non gestito.

Annotazioni

Esistono scenari in cui non si vuole installare in modo esplicito un assembly nella Global Assembly Cache. Se si inserisce uno degli assembly che costituiscono un'applicazione nella Global Assembly Cache, non è più possibile replicare o installare l'applicazione usando il comando xcopy per copiare la directory dell'applicazione. È necessario spostare anche l'assembly nella Global Assembly Cache.

Esistono due modi per distribuire un assembly nella Global Assembly Cache:

  • Usare un programma di installazione progettato per funzionare con Global Assembly Cache. Questa è l'opzione preferita per l'installazione di assembly nella Global Assembly Cache.

  • Usare uno strumento di sviluppo denominato strumento Global Assembly Cache (Gacutil.exe), fornito da Windows SDK.

    Annotazioni

    Negli scenari di distribuzione usare Windows Installer per installare gli assembly nella Global Assembly Cache. Usare lo strumento Global Assembly Cache solo negli scenari di sviluppo, perché non fornisce il conteggio dei riferimenti agli assembly e altre funzionalità fornite quando si usa Windows Installer.

A partire da .NET Framework 4, il percorso predefinito per Global Assembly Cache è %windir%\Microsoft.NET\assembly. Nelle versioni precedenti di .NET Framework, il percorso predefinito è %windir%\assembly.

Gli amministratori spesso proteggono la directory systemroot usando un elenco di controllo di accesso (ACL) per controllare la scrittura ed eseguire l'accesso. Poiché la Global Assembly Cache è installata in una sottodirectory della directory "systemroot", eredita l'ACL di quella directory. È consigliabile che solo gli utenti con privilegi di amministratore possano eliminare i file dalla Global Assembly Cache.

Gli assembly distribuiti nella Global Assembly Cache devono avere un nome forte. Quando un assembly viene aggiunto alla Global Assembly Cache, i controlli di integrità vengono eseguiti su tutti i file che costituiscono l'assembly. La cache esegue questi controlli di integrità per assicurarsi che un assembly non sia stato manomesso, ad esempio quando un file è stato modificato, ma il manifesto non riflette la modifica.

Vedere anche