GAC Preference Order

  • Thread starter Thread starter jminiman
  • Start date Start date
J

jminiman

All,

Let's say I have two versions of the same assembly installed into GAC:

- ABC.Business_v1.0.1000_cneutral.dll
and
- ABC.Business_v1.0.1100_cneutral.dll

And I have an application that uses the ABC.Business.dll with no
specification of version. Will the application always automatically
pick the GAC file with the higher version? Or will there possibly be
room for confusion?

I'm wondering if there's an easy way to clear out the old DLLs (but
not the entire GAC!) during a CAB installation routine.
 
That situation is simply not possible. Application is compiled against
particular assembly version, that's the one it's going to use.

In this case if application is compiled:



1. against ABC.Business.dll with strong name version 1.0.100 it would
use this specific version or throw TypeLoadException if assembly is not
found.

2. against ABC.Business.dll with strong name version 1.0.110 it would
use this specific version or throw TypeLoadException if assembly is not
found.

3. against ABC.Business.dll with no version (not strong name signed,
can't be GAC'ed) it would use that none strong name signed version or throw
TypeLoadException if assembly is not found.


--
Best regards,

Ilya

This posting is provided "AS IS" with no warranties, and confers no rights.

*** Want to find answers instantly? Here's how... ***

1. Go to
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.compactframework?hl=en
2. Type your question in the text box near "Search this group" button.
3. Hit "Search this group" button.
4. Read answer(s).
 
That situation is simply not possible. Application is compiled against
particular assembly version, that's the one it's going to use.

In this case if application is compiled:

1. against ABC.Business.dll with strong name version 1.0.100 it would
use this specific version or throw TypeLoadException if assembly is not
found.

2. against ABC.Business.dll with strong name version 1.0.110 it would
use this specific version or throw TypeLoadException if assembly is not
found.

3. against ABC.Business.dll with no version (not strong name signed,
can't be GAC'ed) it would use that none strong name signed version or throw
TypeLoadException if assembly is not found.

--
Best regards,

Ilya

This posting is provided "AS IS" with no warranties, and confers no rights.

*** Want to find answers instantly? Here's how... ***

1. Go tohttp://groups-beta.google.com/group/microsoft.public.dotnet.framework...
2. Type your question in the text box near "Search this group" button.
3. Hit "Search this group" button.
4. Read answer(s).

Ilya,

Thanks for your response. It's not clear to me why the if my
application is linking to a non-strong named assembly, why would it
not properly load a strong-named assembly from the GAC? I know for a
fact that this works since we've run an installation routine off a
hard reset device that only has these assemblies in GAC. My concern
is that we could reinstall and simply add to the GAC, and it would
become unclear as to which GAC instance the application would refer to.
 
Back
Top