473,382 Members | 1,420 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

What's the point of the GAC?

I know this is a very newbie thing to ask, but...

What's the point of the Global Assembly Cache? It reminds me of the
c:\winnt\system32 directory from my C++ days... just a big confusing jumble
of shared DLLs. This made sense in the "old days" because hard disk space
was more expensive so people didn't want redundant DLLs all over the
place... But what's the point of such a repository in the .NET world?

Thanks,

Michael Jackson
Nov 22 '05 #1
6 1888
Lecture Snoddddgrass <ma***@hamburg.fry> wrote:
I know this is a very newbie thing to ask, but...

What's the point of the Global Assembly Cache? It reminds me of the
c:\winnt\system32 directory from my C++ days... just a big confusing jumble
of shared DLLs. This made sense in the "old days" because hard disk space
was more expensive so people didn't want redundant DLLs all over the
place... But what's the point of such a repository in the .NET world?


The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.
Instead, you just have the GAC with versioned assemblies, so you (in
theory) get around a lot of DLL hell without every app being huge.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 22 '05 #2
> The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.


True, but mscorlib.dll and System.dll are .NET runtime DLLs -- part of
the platform itself. I can see why the GAC would be useful for framework
DLLs... but why would I as a developer want to any of *my* app's DLLs in the
user's GAC?

David
Nov 22 '05 #3
You wouldn't, unless you're building infrastructure-level components used by
more than one application on the box.
--
____________________
Klaus H. Probst, MVP
http://www.vbbox.com/

"Lecture Snoddddgrass" <ma***@hamburg.fry> wrote in message
news:ew**************@TK2MSFTNGP10.phx.gbl...
The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.
True, but mscorlib.dll and System.dll are .NET runtime DLLs -- part of
the platform itself. I can see why the GAC would be useful for framework
DLLs... but why would I as a developer want to any of *my* app's DLLs in

the user's GAC?

David

Nov 22 '05 #4
You wouldn't, unless you're building infrastructure-level components used by
more than one application on the box.
--
____________________
Klaus H. Probst, MVP
http://www.vbbox.com/

"Lecture Snoddddgrass" <ma***@hamburg.fry> wrote in message
news:ew**************@TK2MSFTNGP10.phx.gbl...
The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.
True, but mscorlib.dll and System.dll are .NET runtime DLLs -- part of
the platform itself. I can see why the GAC would be useful for framework
DLLs... but why would I as a developer want to any of *my* app's DLLs in

the user's GAC?

David

Nov 22 '05 #5
Lecture Snoddddgrass <ma***@hamburg.fry> wrote:
The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.


True, but mscorlib.dll and System.dll are .NET runtime DLLs -- part of
the platform itself. I can see why the GAC would be useful for framework
DLLs... but why would I as a developer want to any of *my* app's DLLs in the
user's GAC?


For a normal app, you wouldn't want any of *your* code in the GAC. If
you were writing component libraries, however, you might - and as an
application writer, you might want to use other DLLs which are in the
GAC. (For instance, you could have an installer which checked which of
the libraries you needed were already installed, and only downloaded
the ones which weren't already on the user's system.)

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 22 '05 #6
Lecture Snoddddgrass <ma***@hamburg.fry> wrote:
The difference is that assemblies in the GAC are versioned. While it
makes sense for two different applications to want to use two different
versions of the same assembly, there's no point in every application
carrying its own version of mscorlib.dll, System.dll etc around.


True, but mscorlib.dll and System.dll are .NET runtime DLLs -- part of
the platform itself. I can see why the GAC would be useful for framework
DLLs... but why would I as a developer want to any of *my* app's DLLs in the
user's GAC?


For a normal app, you wouldn't want any of *your* code in the GAC. If
you were writing component libraries, however, you might - and as an
application writer, you might want to use other DLLs which are in the
GAC. (For instance, you could have an installer which checked which of
the libraries you needed were already installed, and only downloaded
the ones which weren't already on the user's system.)

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 22 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

220
by: Brandon J. Van Every | last post by:
What's better about Ruby than Python? I'm sure there's something. What is it? This is not a troll. I'm language shopping and I want people's answers. I don't know beans about Ruby or have...
16
by: Jason | last post by:
Hey, I'm an experience programmer but new to Python. I'm doing a simple implementation of a field morphing techinique due to Beier and Neely (1992) and I have the simple case working in Python...
125
by: Sarah Tanembaum | last post by:
Beside its an opensource and supported by community, what's the fundamental differences between PostgreSQL and those high-price commercial database (and some are bloated such as Oracle) from...
20
by: Sam | last post by:
Hi I'm learning to code with C++ and wrote some very simple code. I think it's consistent with every rule but always got compiling errors that I don't understand. The code include 5 files as...
7
by: Aguilar, James | last post by:
Hello all, To begin, yes, this -is- a homework assignment. However, it is for my Algorithms class, and my instructor has given us explicit permission to use "expert" groups like newsgroups, so...
121
by: typingcat | last post by:
First of all, I'm an Asian and I need to input Japanese, Korean and so on. I've tried many PHP IDEs today, but almost non of them supported Unicode (UTF-8) file. I've found that the only Unicode...
8
by: Midnight Java Junkie | last post by:
Dear Colleagues: I feel that the dumbest questions are those that are never asked. I have been given the opportunity to get into .NET. Our organization has a subscription with Microsoft that...
669
by: Xah Lee | last post by:
in March, i posted a essay “What is Expressiveness in a Computer Language”, archived at: http://xahlee.org/perl-python/what_is_expresiveness.html I was informed then that there is a academic...
17
by: Grizlyk | last post by:
Hello. What can be optimised in C++ code and how i can garantee stable behaviour below 1. Are expression "auto volatile" can deny removing as "unused temporary" like this: auto volatile...
2
by: Carl Johansson | last post by:
Except for the syntax, what is the difference, if any, between this... /* ---------------------------------------------------------------------- */ private void Form1_Paint(object sender,...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.