[Mono-list] replacement for mscoree.dll

Jeroen Janssen japj@xs4all.nl
Tue, 31 Dec 2002 14:14:20 +0100

Guenther Roith wrote:

>>Now a possible scenario would be to have a mono + a mscorwks.dll
>>installed in "C:\WINNT\Microsoft.NET\Framework\"<SOME_VERSION>\.
>>Where SOME_VERSION is a version that is not being used by Microsoft
>>(else we have a conflict with an installed .NET Framework).
>I knew about this. Somewhere in the registry the directory for this specail
>version can be set (instead of "C:\WINNT\Microsoft.NET\Framework\" ).
>The problem here is, that this solution requires the Microsoft mscoree.dll
>to be installed.
>>Next step would be to have mcs generate executables that don't need a
>>.config file to execute through this mechanism (the resulting exe should
>>probably contain some kind of reference to a 'SOME_VERSION' runtime, so
>>mscoree will select the correct runtime: mono).
>That is IMO possible, however I like config-file better, because that way we
>can also execute MS compiled apps with mono.
>Maybe we endup, distributing a config file _and_ mscoree.dll.

For people that also have the MS .NET Framework installed we can use our 
own mscorwks.dll (+maybe a .config file).

For people that don't have the MS .NET Framework installed (and thus no 
mscoree.dll) we provide one ourselfs. Problem with always distributing a 
mscoree.dll with your application is that people wanting to run it with 
MS .NET will have to remove it before it's going to work.

I think we should do the following:
* write a mscorwks.dll & installation that puts it in the correct 
directory (and possibly registry). This mscorwks.dll should locate the 
mono environment and use it to execute the application
* write a mscoree.dll & installation (in one of the system directories) 
that locates the mono base directory and hands execution to mscorwks.dll

This mscoree.dll could possibly be shared by other .NET projects 
(DotGNU, etc). However, the mscorwks.dll we provide is probably specific 
to mono.

Now, only way you need a .config file is if both MS .NET and mono are 
installed and we cannot get the 'real' mscoree.dll to select the mono 
runtime (by somehow referencing a mscorlib version in the .NET executable).