How to deploy an assembly into GAC(Global Assembly Cache) ? (2024)

  1. Onlinebuff
  2. C# Interview Questions
  3. How to deploy an assembly into GAC(Global Assembly Cache) ?
  • By Gurunatha Dogi in C#
  • Mar 20th, 2014
  • 57249
  • 1

Inroduction

This article covers complete understanding of global assembly cache (GAC),methods/steps to deploy an assembly in GAC, what are Strong name assemblies, steps to give strong name to an assembly and finally a sample code example of Global Assembly Cache using C-sharp code.

What is Global Assembly Cache (GAC) ?

Global Assembly Cache (GAC) is located on a system and stores assemeblies (DLLs) which is specifically will be shared by several applications (like web/windows). Common language runtime is installed has a machine code cache called the global assembly cache.

In simple words it is a place where we can deploy common DLLs in GAC and that common DLLs which can be further be shared among several/multiple applications on the same computer.

Why we need GAC ?

Let's suppose we have multiple applications on a same computer (App1 & App2) and both of these applications using the same DLL or assembly in their BIN directory. Because both applications are using the same DLL (i.e. common DLL) on the same machine so we can now move this common DLL to a common place (global assembly cache - GAC) where both of applications (App1 & App2) can share this common DLL on the same machine.

How to deploy an assembly in GAC

In order to deploy an assembly in GAC, we have to create a strong name for an assembly.

Kindly Note : We cannot deploy an assembly in GAC without a strong name, Each and every assembly need to have a strong name for an assembly in order to deploy it in GAC.

So inorder to deploy or to install an assembly in GAC we need to have strong name for an assembly. So let's understand about strong names and how to give strong or how to create strong name keyfile file.

What are Strong name assemblies.

Strong name for an assembly guarantees the uniqueness by unqiue key pairs. Because an assembly generated with a strong name consist of unique identity with its public key, version number, text name, culture information and a digital signature.

It guarantees that no one can generate the same assembly with same private key and protects an assembly from versioning lineage and tampering. On passing to .NET framework it provides strong integrity check or security checks and guarantees that the contents of an assembly have not been changed since it was built.

Steps to give strong name to an assembly/DLL

Method 1 : Using Visual Studio Command Prompt

1. Open up the visual studio command prompt or .Net command prompt. (You can find command prompt in program files -> Visual studio -> Visual studio tools).

2.Click to open command prompt then navigate to project folder

eg: to navigate to any drive type drive name followed by colon (i.e. to navigate "D" drive type * D: and press on Enter button*). After navigating to a drive type "cd followed by any folder name" (i.e. cd Gacdemo and press on Enter button).

Same way you can navigate to your own custom folder by using commands.

3.Go to the project folder using commands in visual studio command prompt

4.Once you are inside your project folder, Now let's create a strong name file by using following command as shown below.

sn -k Gacdemo.snk

You can replace "Gacdemo" with your own project name or any name as per your requirement.

Type "sn -k Gacdemo.snk" then press on Enter button.This will create Gacdemo.snk (Strong Name Key File) in that folder.

Strong name file consist of unique identity or private key with its version number, text name, public key, culture information and a digital signature.

Method 2 : Using Visual Studio IDE

First create any project in your visual studio, Once your project is been created.

GoTo-->Project(From Top Menu of Visual Studio)-->ProjectName Properties as shown in below image.

How to deploy an assembly into GAC(Global Assembly Cache) ? (1)

Then go to-->Signing Tab-->Sign the assembly-->Give new strong name or select existing strong name.

After giving strong name to a DLL, Now its time to deploy an assembly (DLL) into GAC. There are various methods from which you can deploy an assembly in GAC as shown below.

How to install or register an assembly in GAC

1st Method

Just drag and drop/ CopyPaste an assembly to an assembly folder.

To find an assembly folder first you need to check your windows installation drive, In my case my windows is installed in "C-drive" so its "C" drive C:\WINDOWS\assembly.

2nd Method

Using Microsoft .NET Framework SDK v2.0/V.4.0

Make sure that you installed .NET Framework SDK v2.0/V.40 in your mechine. If not Please download from the below given url and install it.

http://www.microsoft.com/en-us/download/details.aspx?id=19988 or http://www.microsoft.com/en-us/download/details.aspx?id=8279

1. Click Start > All Programs > Administrative Tools > Microsoft .NET Framework 2.0/4.0 Configuration.
2. Click Manage the Assembly Cache.
3. Select Add an Assembly to the Assembly Cache.
4. Browse and select your DLL, which you want to install it in GAC
5. Click Open. This will deploy the selected assemblies into the Global Assembly Cache (GAC).
6. Restart the IIS.

3rd Method

Open up visual studio command prompt not the windows command prompt.

Then navigate to your assembly drive type drive name and followed by colon i.e. d:

Then command "cd" followed by folder name i.e. cd assemblyfolder

GAC Command

Now in order install/deploy an assembly in GAC using command prompt we need to use the following command as shown below

gacutil -i assemblyname

So now that you have understood about GAC, strong names and how to give strong name to an assembly and steps to register an assembly in GAC now its time to see a simple code example of GAC.

Sample code example of Global Assembly Cache

Here in this code example, we will demostrate step by step from DLL creation and deployment of a DLL in GAC and how to utilize shared DLL (Registered DLL) in windows form application.

Step 1 - Create a C-Sharp Project

Let's create a simple C# project

Step 2 - Code a project

Let's add some coding to it

 public class CommonGac { public string MachineName() { return "My Machine Name is : " + Environment.MachineName; } }

Step 3 - Give a strong name

GoTo-->Project(From Top Menu of Visual Studio)-->ProjectName Properties as shown in below image.

How to deploy an assembly into GAC(Global Assembly Cache) ? (2)

Then go to-->Signing Tab-->Sign the assembly-->Give new strong name.

How to deploy an assembly into GAC(Global Assembly Cache) ? (3)

How to deploy an assembly into GAC(Global Assembly Cache) ? (4)

We have created a new strong name as "CommonGacKey". Now lets save the project and build the project once again.

How to deploy an assembly into GAC(Global Assembly Cache) ? (5)

As you see friends a strong name key file "CommonGacKey.snk" is been added to our project folder.

Step 4 - Create a new common folder

In this step we will create a new common folder in the same drive or any other drive.

We have created a new folder called "GacCommon" in E-drive.

Step 5 - Move the DLL to common folder

In this step we will move the "CommonGac" project DLL to a new folder "GacCommon" which we have created in E-drive.

Step 6 - Deploy DLL in GAC

To deploy an assembly or DLL in global assembly cache we will use our visual studio command prompt and our GAC command.

i.e. gacutil -i assemblyname

gacutil -i CommonGac.dll

How to deploy an assembly into GAC(Global Assembly Cache) ? (6)

As you see from our above snapshot that we have successfully added "CommonGac.dll" to GAC which was stored in E-drive GacCommon folder.

Step 7 - Add new project

Now we have to add a new project "Windows Application or Web Application" to our existing C# project. In this scenario we will add "Windows Application".

How to deploy an assembly into GAC(Global Assembly Cache) ? (7)

Step 8 - Code the Windows Application Project

First we will add a simple button on Form screen then we will reference the "CommonGac.dll" which we have saved in new folder "GacCommon" in E-Drive (because DLL present in "GacCommon" folder is got registered in GAC).

How to deploy an assembly into GAC(Global Assembly Cache) ? (8)

As you see in our above image snapshot of solution explorer that we have referenced "CommonGac.dll" to our Windows Application Project.

Step 9 - Call the Class in Button Code

In this step we have to import the namespace "CommonGac" and call the "CommonGac" class object in the button code as shown in the below snippet of code.

 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using CommonGac;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } CommonGac.CommonGac objGac; private void button1_Click(object sender, EventArgs e) { objGac = new CommonGac.CommonGac(); MessageBox.Show(objGac.MachineName()); } }}

Finally build the windows application solution .

Step 10 - Copy the EXE to Any New Folder

After building the windows application solution an exe file will be created inside bin\debug directory.

Copy that exe "WindowsFormsApplication1.exe" to any folder or any drive. We have copied the "WindowsFormsApplication1.exe" to that common folder "GacCommon" in E-drive.

Step 11 - Finally Output

Double click on "WindowsFormsApplication1.exe" to check the output. Let's check the output.

How to deploy an assembly into GAC(Global Assembly Cache) ? (9)

Hey friends hope you understood about global assembly cache and steps to deploy an assembly into gac. In the further upcoming article we will also cover how to handle multiple versioning of DLL in GAC.

If you have any doubts kindly let me know through your comments and kindly share this article with your friends on google+, facebook and twitter etc. Thank you

How to deploy an assembly into GAC(Global Assembly Cache) ? (10)

Gurunatha Dogi

Gurunatha Dogi is a software engineer by profession and founder of Onlinebuff.com, Onlinebuff is a tech blog which covers topics on .NET Fundamentals, Csharp, Asp.Net, PHP, MYSQL, SQL Server and lots more..... read more

Comments

How to deploy an assembly into GAC(Global Assembly Cache) ? (11)

By Shawpnendu on 2014-07-27

Nice explanation thanks.REGARDSshawpnendu

Add a Comment

How to deploy an assembly into GAC(Global Assembly Cache) ? (2024)
Top Articles
A Retirement Tax-Planning Case Study (and Excel Toolkit!) - SWR Series Part 45 - Early Retirement Now
Tax Rates for Retirement Planning
Skycurve Replacement Mat
What spices do Germans cook with?
Bin Stores in Wisconsin
No Hard Feelings Showtimes Near Metropolitan Fiesta 5 Theatre
Acts 16 Nkjv
Mail Healthcare Uiowa
Ribbit Woodbine
A Fashion Lover's Guide To Copenhagen
Select Truck Greensboro
Purple Crip Strain Leafly
123Moviescloud
Everything You Need to Know About Holly by Stephen King
Turning the System On or Off
Bernie Platt, former Cherry Hill mayor and funeral home magnate, has died at 90
Alaska: Lockruf der Wildnis
Craigslist Panama City Fl
Wal-Mart 140 Supercenter Products
The Grand Canyon main water line has broken dozens of times. Why is it getting a major fix only now?
Booknet.com Contract Marriage 2
TBM 910 | Turboprop Aircraft - DAHER TBM 960, TBM 910
The best firm mattress 2024, approved by sleep experts
Samantha Aufderheide
Qhc Learning
SuperPay.Me Review 2023 | Legitimate and user-friendly
Directions To Nearest T Mobile Store
Creed 3 Showtimes Near Island 16 Cinema De Lux
Gillette Craigslist
Expression Home XP-452 | Grand public | Imprimantes jet d'encre | Imprimantes | Produits | Epson France
Miller Plonka Obituaries
Craigslist Sf Garage Sales
Poe T4 Aisling
The Venus Flytrap: A Complete Care Guide
Craigslist Hamilton Al
Tyler Sis 360 Boonville Mo
oklahoma city community "puppies" - craigslist
Waffle House Gift Card Cvs
R&J Travel And Tours Calendar
Maxpreps Field Hockey
Temu Y2K
Publictributes
Pay Entergy Bill
140000 Kilometers To Miles
Wait List Texas Roadhouse
Questions answered? Ducks say so in rivalry rout
Lacy Soto Mechanic
Cocaine Bear Showtimes Near Cinemark Hollywood Movies 20
Pixel Gun 3D Unblocked Games
3367164101
New Zero Turn Mowers For Sale Near Me
6463896344
Latest Posts
Article information

Author: Wyatt Volkman LLD

Last Updated:

Views: 6226

Rating: 4.6 / 5 (46 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Wyatt Volkman LLD

Birthday: 1992-02-16

Address: Suite 851 78549 Lubowitz Well, Wardside, TX 98080-8615

Phone: +67618977178100

Job: Manufacturing Director

Hobby: Running, Mountaineering, Inline skating, Writing, Baton twirling, Computer programming, Stone skipping

Introduction: My name is Wyatt Volkman LLD, I am a handsome, rich, comfortable, lively, zealous, graceful, gifted person who loves writing and wants to share my knowledge and understanding with you.