[Mono-devel-list] GAC (design) issues
Ian MacLean
ianm at ActiveState.com
Sat May 1 00:32:48 EDT 2004
+1 . On the ms implementation the gac is considered a special system
location and is unaccessible from the filesystem ie you can't reference
an assembly in the gac using a filesystem path. Thats why all system
assemblies are mirrored at \WINDOWS\Microsoft.NET\Framework\{version_no}
as well as being stored in the gac.
Ian
Gert Driesen wrote:
>Hi Jackson,
>
>In my opinion, the current implementation of GAC in mono has three (major?)
>issues :
>
>1. Mono system assemblies are no longer copied to a lib directory directory
>where developers can explicitly reference a certain version of a system
>assembly using a full path. Can this please be put back in ? Moreover,
>wouldn't it be better to have a lib/mono/<mono version> directory (where
><mono version> is actually a major version.minor version number for major
>releases, so 1.0 or 2.0 for now) ?
>
>You'd get the following directory structure :
>
>lib\
> mono\
> gac\
> System\
> 1.0.5000.0__b77a5c561934e089\
> System.dll
> ....
> 1.0\
> System.dll
> ....
> 2.0\
>bin\
> mono\
> 1.0\
> 2.0\
>
>This is similar to what MS does.
>
>Currently, removing a system assembly from the GAC will remove it completely
>from your system, as its only stored in the GAC. this would be resolved too
>when these assemblies are stored in the GAC and in a Mono (version-specific)
>lib directory.
>
>2. In order to compile applications referencing system assemblies using mcs,
>mcs was updated to allow unqualified assembly references to be resolved
>using the GAC (see Mono.CSharp.Driver.LoadAssemblyFromGac). I assume this
>change was only introduced to copy with the fact that system assemblies are
>now only stored in the GAC, so resolving issue 1 would remove the need for
>this change to mcs.
>
>3. As part of mcs clean, assembies are removed from the gac using the
>basename of the assembly, eg to remove System.Data, Version=1.0.5000.0,
>Culture=neutral, PublicKeyToken=b77a5c561934e089 from the GAC, the following
>command is executed :
>
> gacutil /u System.Data
>
>This could cause other versions of the System.Data assembly to be removed
>from the GAC too. We should always use the fully qualified assembly names to
>remove assemblies from the GAC.
>
>Regards,
>
>Gert
>
>_______________________________________________
>Mono-devel-list mailing list
>Mono-devel-list at lists.ximian.com
>http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
More information about the Mono-devel-list
mailing list