Re: Please explain why the GAC cannot be referenced
- From: "Mythran" <Mythran@xxxxxxxxxxxxxxxx>
- Date: Thu, 17 Jul 2008 09:44:35 -0700
"MR E" <MRE@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:A6E35C97-7294-45DD-BCEE-3D20D94B4CFD@xxxxxxxxxxxxxxxx
Ok, Im confused, someone please clear things up for me. I know this may seem
like a stupid question.
I built a DLL that is to be used by all of our applications to perform
routine tasks. When the discussion came up about weather or not to store this
DLL in the GAC or in the individual projects, I had suggested the GAC. My
thought was that IF an update needs to take place, we wouldn’t have to update
the bin folder of every application. Instead we would simply uninstall the
old assembly from the GAC and install the newer version.
Now Im finding out that you cant reference the GAC, that you still would
need to have the DLL in a local directory and set the do not copy local
option. This would only work assuming that you development server drive
letters and paths match the production server
This to me defeats the purpose and maybe I don’t understand. If I cant
reference the GAC then, it means I would need to rebuild the project on the
Production server as well as the Development server because (in our case),
the driver letters and folder paths don’t match. So what may exist in C:\My
Assembles on our development box surely wont exist on the production box
unless I’m allow to create the path on the production box. Unfortunately our
production sites do not go to the C: drive. What’s the purpose of the GAC if
you cant reference it and still required to reference a copy of the DLL
outside the GAC
MR E,
You should be able to reference the GAC. I'm not quite sure what the problem is on your end that prevents you from referencing the items from the GAC. If what I think your problem is is accurate, and correct me if I'm wrong, you think that since on your developer machine, you can't load and reference the assemblies in the GAC because they are not listed in the .Net components, and you still have to reference them from your installation folders, then you are partially correct. Hmm, I don't think I can explain it perfectly so lets see if I can get some links for you...
Code Project Link:
http://www.codeproject.com/KB/dotnet/demystifygac.aspx
(for more specific explanation, read this code project document, specially under Popular Misconceptions).
As a side note because I couldn't find a document on it, on your developers machine, you need the assembly that is installed in the gac to be installed elsewhere so you can reference it. At runtime, the .Net Framework automatically refers to the GAC'ed assembly if installed. The framework will attempt to locate the referenced assembly in the application's bin folder, if not present it will look in the GAC (I believe that is the order). There are other locations that the framework will look for the assemblies as well, and those places are documented in the MSDN Library documentation. So, what this means is, on the production and testing servers, your application does not need the assembly to be in it's BIN directory if it's installed in the GAC...but, the assembly reference on the machine where the application was built must match (same assembly signature) the assembly that is installed in the GAC on the servers.
Hope that makes sense...
HTH,
Mythran
.
- Follow-Ups:
- Prev by Date: How to get an handle on an out-of-process COM component ?
- Next by Date: Re: Please explain why the GAC cannot be referenced
- Previous by thread: How to get an handle on an out-of-process COM component ?
- Next by thread: Re: Please explain why the GAC cannot be referenced
- Index(es):
Relevant Pages
|