[Mono-dev] PATCH: Make Process.Start() use thesame'mono'runtime

Robert Jordan robertj at gmx.net
Thu Jun 7 17:17:35 EDT 2007


Jonathan Gilbert wrote:
> As I understand it, unless you are embedding the run-time, the newest
> version is always used to launch any .NET application on Windows. Which BCL
> is used is chosen based on where the metadata in the EXE refers, and the
> bytecode and icalls is backwards-compatible. Launching a .NET 1.1
> application loads it in the 2.0 VM but runs it against the 1.1 BCL. (Mono
> behaves the same way, does it not?)

Nope. On Windows, the loader is launching the runtime (mscor*.dll)
the application was compiled for, if it was able to locate it under
%windir%\Microsoft.NET\Framework\.

If the specific version could not be loaded and if the version
is lower than the highest installed runtime, the application will
be executed using the higher runtime and its higher BCL.
The application can block this behavior by restricting the
runtime version using its app.config.

> Launching any .NET application from any other on Windows *is* guaranteed to
> use the same run-time, but obviously there will be remoting

There is no such guarantee. If, for example, a 2.0 assembly is
Process.Start()-ing a 1.1 assembly, the appropriate runtime will be
used, following the rules above.

Robert




More information about the Mono-devel-list mailing list