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 _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list