[Mono-dev] Porting .NET application (Namespaces)

Jonathan Pryor jonpryor at vt.edu
Wed Jun 30 11:49:47 EDT 2010

On Wed, 2010-06-30 at 06:40 -0700, djdeveloper wrote:
> I'm asking myself how to port a C#.NET app to mono. Do i have to replace all
> the usual namespaces like e.g. "System.Data" with "Mono.Data" and so on?

No.  Mono implements most of the .NET System.* namespaces using the same
assembly names, namespace names, and class names.  Usually [0], no
source code modification is needed.

>  Or
> do I just have to compile using the mono compiler and that's all? If yes,
> what's the use of e.r. "Mono.Data" ?

"Mono" prefixed namespaces and assemblies are for Mono extensions
to .NET and internal implementation details.

For example, Mono.Posix.dll and the Mono.Unix namespace contain POSIX
wrappers which are not present in .NET.

There is no Mono.Data.dll, but there is a Mono.Data.Sqlite.dll which
contains an ADO.NET provider for SQLite (which .NET doesn't provide). 

Mono.Simd provides a managed wrapper over SIMD instruction sets such as
SSE3; .NET has no equivalent.

Other Mono.* directories are used to implement the public .NET classes
and namespaces, e.g. the implementation of many System.Xml types are
done in mcs/class/System.XML/Mono.Xml*, and mscorlib.dll requires a
minimal XML parser contained in mcs/class/corlib/Mono.Xml which isn't
exposed publicly.

 - Jon

[0] Modulo use of features Mono doesn't implement.  See also MoMA:


More information about the Mono-devel-list mailing list