[Mono-list] porting from .NET to Mono

Steve Lessard s_lessard at yahoo.com
Thu Nov 18 11:06:49 EST 2010

I would like to get your advice on porting code from .NET to Mono.  I have a 
class library that I wrote for .NET 3.5 on Windows. In addition to working in 
.NET on Windows I want to get it working in Mono on non-Windows platforms 
(especially OS X on Intel chips.) This class library is currently about 90% C# 
and 10% managed C++. The C# code is in one assembly and the managed C++ code is 
in another assembly. The library has no GUI, but does make use of some 
classes/methods that are not available/implemented in Mono. It also p/invokes to 
some Win32 APIs. 

My initial thoughts on a plan for porting the code:
	* If available replace each p/invoke to a Win32 API with a call to a Mono 
class/method providing similar functionality.
	* If not available I plan to leave the p/invoke in place and build a platform 
specific native library (.dylib on OS X) providing similar functionality with 
the same signature.
	* Stub out or #ifdef out the code entirely. (For example the code that ties in 
to Windows event logging is not essential functionality.)
My initial thoughts on a strategy for porting the code:
	* Port this library to Mono on Windows
	* Port it to Mono on WINE on non-Windows platforms
	* Port it to Mono on non-Windows platforms
My questions:
	1. Aside from unavailable or unimplemented classes/methods in Mono and 
p/invokes to native code what are some common gotchas when porting .NET code to 
	2. Can Mono on Windows run managed C++ code?
	3. Assuming the managed C++ code makes no platform specific calls, is clean for 
32/64 bit architectures, clean for bit endianness could it be recompiled can 
Mono on non-Windows platforms run managed C++ code?
	4. Would porting to Mono on WINE on OS X as an intermediate step be worth the 
	5. Is there a better or alternative porting strategy that you would recommend?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20101118/ff1674f3/attachment-0001.html 

More information about the Mono-list mailing list