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

Michal Moskal malekith at pld-linux.org
Thu Oct 23 17:50:51 EDT 2003


On Thu, Oct 23, 2003 at 05:37:34PM -0400, Todd Berman wrote:
> > 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.

This exactly the same as ld.so.cache.

> 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.

So the definition is wrong. At least on linux using binary packagers,
that handle file management.

> > > 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?

You run gacutil --cache in relevant directories. It traverses them,
and puts somewhere in it's database that file.dll with version 1.0.0.0
(it takes this information from DLL meta data, it's much like soname in
UNIX) is in /foo/bar/file.dll.1.13. The runtime then asks gac library. It
checks its cache and returns proper filename. where's the problem?

> And what about crossplatform.

This is platform neutral (you just need enough filenames :-)

> When I compile an application on windows using Microsoft.Web.Services.dll
> and I tell it to use version 2.0.0.0 instead of version 1.0.0.0 (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'. 

You seem to unify concepts of file name and library name. These need not
be the same -- that's what's GAC is for (think of directories as parts
of file names).

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: When in doubt, use brute force. -- Ken Thompson : {E-,w}-- {b++,e}>+++ h



More information about the Mono-devel-list mailing list