[Mono-devel-list] GAC (design) issues

Miguel de Icaza miguel at novell.com
Sat May 1 12:07:56 EDT 2004

First of all.

    Let me start by saying that -we- the Mono team have relatively
little experience with the GAC, and we have implemented it because:

	* Versioning issues (keeping 1.1, 2.0, x.0 APIs in parallel).

	* Foundation for security-related features.

    But our background is not as complete as those of you who have been
using .NET with the real GAC.   I think that we have a key advantage
which is that we are entirely fresh to this, and we come from a Unix
background where some of the *other* problems that the GAC solves are
non-existent, so we are looking at things slightly differently.

    For instance:

	* I believe the GAC `refcounting' stuff is completely redundant
	  and pointless in Unix.  If you depend on this, you should be
	  fixing your assumptions about Unix-deployment and
	  package-based deployments.

	* If we can make Mono and C# compiler to work with the GAC
	  without having two copies of the assemblies, that is a plus.

	* We can not use a "central location" to register where
	  assemblies are installed.  In Unix this is traditionally done
	  with an environment variable. 

	  We do not support more than one GAC right now (heh ;-), but
	  we are seriously considering adding support for this, to 	
	  allow	developers to develop stuff without touching the system

   With the above in mind, we can have a better debate over these

> But what about non-system assemblies like nunit.framework.dll,
> NDoc.Core.dll, ICSharpCode.SharpCvsLib.dll, ICSharpCode.SharpZipLib.dll
> which come strong-named and in different versions? Are you prepared to type
> (actually copy/paste, because you have no chance to remember it) the full
> name including the public key token and exact version number?

Ideally, we would merge the files, and ship a single unified front.

Now, if you have *multiple* installations of the same beast, you will
have to reference them with a version, and if the version is the same
(quite unlikely) you will have to use the pubtoken.

The good news is that cut and paste is a fairly advanced technology, and
is available in most operating systems we support today :-)


More information about the Mono-devel-list mailing list