[Mono-dev] PATCH: Make Process.Start() use thesame'mono'runtime
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
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.
More information about the Mono-devel-list