Global sammansättningscache
Kommentar
Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.
Varje dator där Common Language Runtime är installerad har en kodcache för hela datorn som kallas global sammansättningscache. Global Assembly Cache lagrar sammansättningar som är specifikt avsedda att delas av flera program på datorn.
Du bör bara dela sammansättningar genom att installera dem i den globala sammansättningscachen när du behöver det. Som en allmän riktlinje ska du hålla sammansättningsberoenden privata och leta upp sammansättningar i programkatalogen såvida inte delning av en sammansättning uttryckligen krävs. Dessutom är det inte nödvändigt att installera sammansättningar i den globala sammansättningscachen för att göra dem tillgängliga för COM-interop eller ohanterad kod.
Kommentar
Det finns scenarier där du uttryckligen inte vill installera en sammansättning i den globala sammansättningscachen. Om du placerar en av de sammansättningar som utgör ett program i den globala sammansättningscacheminnet kan du inte längre replikera eller installera programmet med hjälp av xcopy-kommandot för att kopiera programkatalogen. Du måste också flytta sammansättningen i den globala sammansättningscachen.
Det finns två sätt att distribuera en sammansättning till den globala sammansättningscache:
Använd ett installationsprogram som är utformat för att fungera med global sammansättningscache. Det här är det bästa alternativet för att installera sammansättningar i den globala sammansättningscachen.
Använd ett utvecklarverktyg som kallas verktyget Global Assembly Cache (Gacutil.exe), som tillhandahålls av Windows SDK.
Kommentar
I distributionsscenarier använder du Windows Installer för att installera sammansättningar i den globala sammansättningscachen. Använd verktyget Global Assembly Cache endast i utvecklingsscenarier, eftersom det inte tillhandahåller sammansättningsreferensräkning och andra funktioner som tillhandahålls när du använder Windows Installer.
Från och med .NET Framework 4 är standardplatsen för den globala sammansättningscachen %windir%\Microsoft.NET\assembly. I tidigare versioner av .NET Framework är standardplatsen %windir%\assembly.
Administratörer skyddar ofta systemroot-katalogen med hjälp av en åtkomstkontrollista (ACL) för att styra skriv- och körningsåtkomst. Eftersom den globala sammansättningscachen är installerad i en underkatalog i systemroot-katalogen ärver den katalogens ACL. Vi rekommenderar att endast användare med administratörsbehörighet får ta bort filer från den globala sammansättningscacheminnet.
Sammansättningar som distribueras i den globala sammansättningscachen måste ha ett starkt namn. När en sammansättning läggs till i den globala sammansättningscachen utförs integritetskontroller på alla filer som utgör sammansättningen. Cachen utför dessa integritetskontroller för att säkerställa att en sammansättning inte har manipulerats, till exempel när en fil har ändrats men manifestet inte återspeglar ändringen.