
ike the freely downloadable
Microsoft .NET Framework 2.0 SDK, the free open source
Mono platform provides a number of command line utilities used to compile .NET source code and manipulate the resulting assembly such as to assign a strong name, deploy the image to the Global Assembly Cache (GAC), view type metadata, etc. Many of the Mono tools even have the same name as their Microsoft counterparts and offer similar functionality. Table 1 provides a Mono-to-Microsoft .NET comparison of some common command-line development tools.
Author's Note: This article assumes a basic understanding of the Mono platform, the C# programming language and the mechanics of the .NET framework. If you are new to Mono development, I'd suggest reading the article An Introduction to Mono Development before proceeding. |
Table 1. The table shows common Mono vs. Microsoft .NET command line development tools.
Mono Command Line Tool |
Microsoft .NET Command Line Tool |
Meaning in Life |
al |
al |
The assembly linker utility is used to manipulate assembly manifests and build multifile assemblies (among other activities). |
mcs/gmcs |
csc |
The C# language compiler. |
mbas |
vbc |
The Visual Basic language compiler. |
gacutil |
gacutil |
Used to interact with the GAC. |
mono (when specifying the -aot command option) |
ngen |
Performs a pre-compilation of an assembly's CIL code. |
wsdl |
wsdl |
Generates client side proxy code for an XML Web services. |
disco |
disco |
Discovers the URLs of XML Web services located on a Web server. |
xsd |
xsd |
Generates type definitions from an XSD schema file. |
sn |
sn |
Used to generate key data for a strongly named assembly. |
monodis |
ildasm |
The CIL disassembler. |
ilasm |
ilasm |
The CIL assembler. |
xsp2 |
webdev.webserver |
A testing and development web server for ASP.NET 2.0 applications. |
While it is certainly true that you can make use of the Mono command line tools and your text editor of choice to build any sort of .NET application, raw command line tools offer little by way of developer productivity. But if you've always believed you'd have to give up the comforts of an IDE to develop for Mono, think again. This article provides a high-level survey of three Integrated Development Environments (IDEs) that can facilitate the construction of Mono applications. As you can gather from Table 2, some of these tools are open source. Each targets a particular set of Mono-aware operating systems.
Table 2. Here's a sampling of Mono-aware IDEs.
Mono-aware IDE |
Runs on Windows? |
Runs on Unix \ Linux? |
Runs on Mac OS X? |
Open Source? |
SharpDevelop |
Yes |
No |
No |
Yes |
MonoDevelop |
See below |
Yes |
Yes |
Yes |
X-Develop |
Yes |
Yes |
Yes |
No |
Author's Note: Technically it is possible to install MonoDevelop on Windows using the cygwin Unix-emulation environment; however I won't examine this topic here. |
The purpose of this article is
not to provide details regarding every option or feature provided by each IDE (menu choices, use of the visual designers, building custom code snippets, etc), but rather to show you the core details required to compile C# code against the Mono base class libraries and run the assembly under the Mono runtime.