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
Need tips on bidding
Achieving Three Dimensions of Scaling Within an Experiment
Pixel Speedrun Unblocked 76
Wild Smile Stapleton
The Idol - watch tv show streaming online
Vardis Olive Garden (Georgioupolis, Kreta) ✈️ inkl. Flug buchen
Cvs Learnet Modules
House Party 2023 Showtimes Near Marcus North Shore Cinema
Elizabethtown Mesothelioma Legal Question
Moonshiner Tyler Wood Net Worth
Bad Moms 123Movies
Craigslist Farm And Garden Tallahassee Florida
Scenes from Paradise: Where to Visit Filming Locations Around the World - Paradise
My.tcctrack
Wicked Local Plymouth Police Log 2022
Video shows two planes collide while taxiing at airport | CNN
Jellyfin Ps5
Craigslist Sparta Nj
Football - 2024/2025 Women’s Super League: Preview, schedule and how to watch
Minnick Funeral Home West Point Nebraska
Klsports Complex Belmont Photos
Churchill Downs Racing Entries
Cornedbeefapproved
Missing 2023 Showtimes Near Mjr Southgate
Emiri's Adventures
Wcostream Attack On Titan
NIST Special Publication (SP) 800-37 Rev. 2 (Withdrawn), Risk Management Framework for Information Systems and Organizations: A System Life Cycle Approach for Security and Privacy
The Venus Flytrap: A Complete Care Guide
new haven free stuff - craigslist
Metra Union Pacific West Schedule
404-459-1280
Greencastle Railcam
Royals op zondag - "Een advertentie voor Center Parcs" of wat moeten we denken van de laatste video van prinses Kate?
John F Slater Funeral Home Brentwood
Gets Less Antsy Crossword Clue
Hometown Pizza Sheridan Menu
O'reilly's Palmyra Missouri
Dwc Qme Database
Yourcuteelena
Willkommen an der Uni Würzburg | WueStart
Tyco Forums
Aurora Southeast Recreation Center And Fieldhouse Reviews
Waco.craigslist
Scott Surratt Salary
25100 N 104Th Way
The Hardest Quests in Old School RuneScape (Ranked) – FandomSpot
Coleman Funeral Home Olive Branch Ms Obituaries
Best brow shaping and sculpting specialists near me in Toronto | Fresha
Ihop Deliver
All Obituaries | Roberts Funeral Home | Logan OH funeral home and cremation
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.