Hi,
Wine is still using Mono by creating a new process altough it has support for _CorExeMain and _CorDllMain. There is a MonoFixupCorEE method exported by mono.dll that could be used.
I also did some research on executing exe assemblies without creating a mono.exe process on MS Windows by injecting code to the new process before initialization to load Mono. Note that because mscoree.dll is loaded at a very early process initilization stage no side-by-side manifests can be used that is required by newer MSVCRTs so I'll most likely create a separate DLL that will load mono.dll later in _CorExeMain or _CorDllMain.
For the above mentioned reason it may be better not to use MonoFixupCorEE yet.
I would like to receive comments on mixed-mode assembly support of Mono on Wine and if there are people willing to update the Loader to call _CorValidateImage, _CorExeMain (real entry point is not called for EXEs) and _CorImageUnloading for managed images.
MSVCRT also should call CorExitProcess on exit.
Kornél