[Mono-devel-list] Running multiple assembliy versions in parallel

Jonathan Pryor jonpryor at vt.edu
Thu Sep 25 07:23:31 EDT 2003

Response inline...

On Thu, 2003-09-25 at 01:07, Yuri Astrakhan wrote:
> Hi.
> Does mono have support for running multiple versions of the same code
> in parallel the way .net does?

Maybe? :-)

Mono has support for AppDomains (though it was somewhat broken last I
checked), which is one of the requirements for loading multiple assembly
versions.  (At least, I think you can only have one assembly version
loaded in each AppDomain; I could be wrong.  If it is wrong, it doesn't
really effect the following arguments much.)

As for actual assembly versions...  Mono doesn't have a Global Assembly
Cache (GAC), so the only way to have two different versions of the same
assembly is to actually rename the assembly, e.g. Assembly-v1.dll and
Assembly-v2.dll.  In which case they look just like two different
assemblies, and will likely be treated as such. :-D

In other words, this question has many sub-questions, which can be
answered separately, but probably don't answer your actual question. 
True versioning support likely requires the GAC, which isn't implemented

Conceptually, adding the GAC shouldn't change the VM/JIT much; you just
consider different assembly versions to be entirely different assemblies
-- which is the current situation -- and move on from there.  The GAC
comes into play when you're trying to *find* the assembly to load/JIT
against (same major version, but different minor versions are permitted,
unless the <program>.config file says otherwise, etc.).

> Is this feature planned

GAC support is planned, but I don't know when Mono will implement it.

> , and more importantly, is that a major code rewrite, or is it more
> like an add-on feature that would make a good VM learning project.

It shouldn't require rewriting lots of code.  It will likely require
changing existing code for assembly looking/assembly binding via the
GAC, but I don't think that would require a major rewrite.

> In your opinion, how much effort would this require to implement?

GAC support has been raised in the past, and the answer (IIRC) was ~3
Then again, re-writing System.Xml was considered to take a year, and Ben
Maurer did it in little more than a month:


So, the actual answer won't be determined until it's actually written.

 - Jon

More information about the Mono-devel-list mailing list