Microsoft KB Archive/910355

= How to install an assembly in the .NET Framework global assembly cache =

Article ID: 910355

Article Last Modified on 11/22/2007

-

APPLIES TO


 * Microsoft .NET Framework 2.0 Software Development Kit
 * Microsoft Visual Studio 2005 Team System Architect Edition
 * Microsoft Visual Studio 2005 Team System Developer Edition
 * Microsoft Visual Studio 2005 Team System Test Edition
 * Microsoft Visual Studio 2005 Team Foundation
 * Microsoft Visual Studio 2005 Standard Edition
 * Microsoft Visual Studio 2005 Professional Edition
 * Microsoft Visual Studio 2005 Express Edition
 * Microsoft Visual Basic 2005
 * Microsoft Visual C# 2005 Express Edition

-







For a Microsoft Visual Basic .NET version of this article, see 315682.



For a Microsoft Visual C++ 2005 and Visual C++ .NET version of this article, see 815807.



For a Microsoft Visual C# .NET version of this article, see 815808.



SUMMARY
''This article describes how to install an assembly .dll file in the Microsoft .NET Framework global assembly cache. To do this, you can use the Microsoft .NET Framework Software Development Kit (SDK) Global Assembly Cache tool. An assembly must have a strong name to be installed in the global assembly cache. This article describes how to create an assembly that has a strong name by using Microsoft Visual Studio 2005. Additionally, this article describes how to verify that the assembly is installed in the global assembly cache. To accomplish this task, you must have Administrator rights to the computer where the shared assembly is installed. Additionally, you must install the .NET Framework SDK.''



INTRODUCTION
This step-by-step article describes how to create an assembly that has a strong name by using Visual Studio 2005. Additionally, this article describes how to install an assembly .dll file in the .NET Framework global assembly cache. To do this, you can use the .NET Framework SDK Global Assembly Cache tool. You can also use the Global Assembly Cache tool to verify that the assembly is installed in the global assembly cache.



The global assembly cache
The .NET Framework global assembly cache is a code cache. The global assembly cache is automatically installed on each computer that has the .NET Framework common language runtime installed. Any application that is installed on the computer can access the global assembly cache. The global assembly cache stores assemblies that are specifically designated to be shared by several applications on the computer. Component assemblies are typically stored in the C:\WINNT\Assembly folder.

Note Only install an assembly in the global assembly cache when you must share the assembly. Unless sharing an assembly is explicitly required, we recommend that you keep assembly dependencies private and that you locate the assembly in the application directory. Additionally, you do not have to install an assembly in the global assembly cache to make the assembly available to Microsoft Component Object Model (COM) interop or to unmanaged code.

An assembly
An assembly is a fundamental part of programming with the .NET Framework. An assembly is a reusable, self-describing building block of a .NET Framework common language runtime application.

An assembly contains one or more code components that the common language runtime executes. All types and all resources in the same assembly form an individual version of the unit. The assembly manifest describes the version dependencies that you specify for any dependent assemblies. By using an assembly, you can specify version rules between different software components, and you can have those rules enforced at run time. An assembly supports side-by-side execution. This enables multiple versions to run at the same time.

Strong-name signing
An assembly must have a strong name to be installed in the global assembly cache. A strong name is a globally unique identity that cannot be spoofed by someone else. By using a strong name, you prevent components that have the same name from conflicting with each other or from being used incorrectly by a calling application. Assembly signing associates a strong name together with an assembly. Assembly signing is also named strong-name signing. A strong name consists of the following information:
 * The simple text name of the assembly
 * The version number of the assembly
 * The culture information about the assembly, if this information is provided
 * A public key and private key pair

This information is stored in a key file. The key file is either a Personal Information Exchange (.pfx) file or a certificate from the current user's Microsoft Windows certificate store.

You can sign an assembly by using the options on the Signing tab of the Project Designer in Visual Studio 2005. In Visual Studio 2005, the key file must be stored in the project folder on the local computer. Visual Studio 2005 supports only the following file formats:
 * Personal Information Exchange (.pfx) files
 * Strong name key (.snk) files

Requirements
You must meet the following requirements before you install an assembly in the global assembly cache:
 * You must have Administrator rights to the computer where the shared assembly is installed.
 * You must install the .NET Framework SDK.

This article assumes that you are familiar with the following topics:
 * General familiarity with shared assemblies in Microsoft .NET
 * General familiarity with the use of tools at a command prompt

How to install an assembly in the global assembly cache
This method is based on how to create an assembly by using Visual Studio 2005. To create an assembly that can be shared by multiple applications, the shared assembly must have a strong name. Additionally, the shared assembly must be deployed in the global assembly cache.

To create a small Microsoft Visual C# assembly that has a strong name and to install the compiled .dll file in the global assembly cache, follow these steps:  Create a new Visual C# Class Library project that is named GACDemo. To do this, follow these steps:  Start Visual Studio 2005. On the File menu, click New Project. In the Templates list, click Class Library.</li> In the Name box, type GACDemo, and then click OK.</li> To save the project, press CTRL+SHIFT+S.</li> In the Location box, type C:\DemoProjects .</li> Click to clear the Create directory for solution check box, and then click Save.</li></ol> </li> Generate a strong name, and then associate the strong name key file together with the assembly. To do this, follow these steps: <ol style="list-style-type: lower-alpha;"> On the Project menu, click GACDemo Properties.</li> On the Signing tab, click to select the Sign the assembly check box.</li> Under Choose a strong name key file, click <New>.</li> In the Create Strong Name Key dialog box, click to select the Protect my key file with a password check box.</li> In the Key file name box, type GACDemo .</li> In the Enter password box, type the password that you want to use.</li> In the Confirm password box, type the same password, and then click OK.

Note We recommend that you always use a password when you create a key file. A new key file that is protected by a password is always created in the .pfx file format.</li> To compile the project, press CTRL+SHIFT+B.

Note No additional code is required to install a .dll file in the global assembly cache.</li></ol> </li> Install the .dll file that you created in step 2 in the global assembly cache by using the Global Assembly Cache tool. To do this, follow these steps: <ol style="list-style-type: lower-alpha;"> Click Start, click Run, type cmd, and then click OK.</li> To change the current working directory to the directory where the .NET Framework SDK is installed, use one of the following commands: <ul> <li>If the .NET Framework version 2.0 SDK is installed, type the following command, and then press ENTER:

cd &quot;%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin&quot;

</li> <li>If the .NET Framework version 1.1 SDK is installed, type the following command, and then press ENTER:

cd &quot;%ProgramFiles%\Microsoft.NET\SDK\v1.1\Bin&quot;

</li></ul> </li> <li>At a command prompt, type the following command, and then press ENTER:

gacutil -I &quot;C:\DemoProjects\GACDemo\bin\Release\GACDemo.dll&quot;

</li></ol> </li></ol>

How to verify that the assembly is installed in the global assembly cache
You can use the Global Assembly Cache tool to verify that the assembly is installed in the global assembly cache. To do this, follow these steps: <ol> <li>Click Start, click Run, type cmd, and then click OK.</li> <li>To change the current working directory to the directory where the .NET Framework SDK is installed, use one of the following commands: <ul> <li>If the .NET Framework 2.0 SDK is installed, type the following command, and then press ENTER:

cd &quot;%ProgramFiles%\Microsoft Visual Studio 8\SDK\v2.0\\Bin&quot;

</li> <li>If the .NET Framework 1.1 SDK is installed, type the following command, and then press ENTER:

cd &quot;%ProgramFiles%\Microsoft.NET\SDK\v1.1\Bin&quot;

</li></ul> </li> <li>To display the installation information about the GACDemo assembly, use the Global Assembly Cache tool. To do this, type the following command at a command prompt, and then press ENTER:

gacutil -l GACDemo

Note The installation information about the GACDemo assembly is displayed.</li></ol>

<div class="references_section">