[Mono-devel-list] Re: Potential GAC implementation ideas.

Todd Berman tberman at gentoo.org
Thu Oct 23 17:37:34 EDT 2003

Ok, I am assuming this email was also meant for the list, so I will reply

> -----Original Message-----
> From: Michal Moskal [mailto:malekith at pld-linux.org]
> Sent: October 23, 2003 5:24 PM
> To: Todd Berman
> Subject: Re: [Mono-devel-list] Re: Potential GAC implementation ideas.
> On Thu, Oct 23, 2003 at 05:16:32PM -0400, Todd Berman wrote:
> > Somehow, either I'm missing the point of the Global Assembly Cache or
> > something.
> It's cache. Much like /etc/ld.so.cache right? Then why you want it to
> manage files?

The GAC is far more than ld.so.cache, it is where the runtime looks to find
assemblies that cant be found in (on mono) the cwd and the MONO_PATH. I am
not 100% sure of the lookup order, and which takes precedence, but that's
not important at this stage.

The GAC by definition manages the files that are put into it so it can
handle the versioning issues outside of the user (and most of the time,
developer) scope.

> > You are suggesting we have a cache of dlls to be cached in the GAC?
> >
> > To me, that seems like the main purpose is defeated. And that doesn't
> take
> > into account different versions of the library with the same name.
> It doesn't present a problem for the packager to choose
> filename that will be unique (file.dll.$version or something).

maybe not for the packager, but what about the runtime?

And what about crossplatform.

When I compile an application on windows using Microsoft.Web.Services.dll
and I tell it to use version instead of version (both of
which are installed, and in the GAC) it lists the assembly in the PE as
'Microsoft.Web.Services' not as 'Microsoft.Web.Services.$version'. This
instantly makes my application not crossplatform. To me, the crossplatform
capabilities of .net are one of the reasons it is so neat (again, my

And its not just limited to running precompiled applications, think of all
the build hacks that would have to go into place to take into consideration
the fact that on ms.net you use one name, and on mono you use the other.

And again, just to put a bit of spin on this, remember that if you are
writing an application with an assembly that you use in that application
alone, you don't need to use the GAC, nor do you need to have your rpm deal
with the GAC, you can just hum along with it in the applications directory,
or inside your MONO_PATH.


More information about the Mono-devel-list mailing list