Source Code Editing and Navigation
MonoDevelop integrates many tools, commands and automations to simplify the editing and browsing of the code. Here is a list of the most important ones:
Visual Designer for GTK#
Easy to use GUI designer for GTK# applications. Supports the creation and management of custom GTK# widget libraries.
![]() |
Integrated Visual Designer
The GTK# visual designer is integrated in the IDE workbench. It provides a customizable widget toolbox, a property grid for editing wiget properties, and a widget tree for browsing the structure of a window. The designer generates the required code behind the scenes, using partial classes. See screencast: Creating a simple user interface with MonoDevelop. |
![]() |
Menu and toolbar designer
The menu and toolbar designers are based on the UIManager/Action/ActionGroup model. Building a menu is really easy and 'visual'. You only need to add a menu bar to the window and start writing options. The menu designer looks like a regular menu, but clicking on a menu item makes it selected, so that you can change its properties using the Properties pad. Clicking again on the menu item when it is selected will start the editing mode of the menu item, in which you can change the label or the icon. When you are creating menu items in this way, the designer creates Actions for each menu item at the same time. Those actions are added to the window's ActionGroup. |
![]() |
Stock Icons
MonoDevelop can manage icons to be included in a project. The idea is that you select some images, give them an ID, and MonoDevelop will generate a Gtk.IconFactory for you and will register the icons there. You can then use that ID when creating buttons or anything that requires a stock id. |
![]() |
Widget Toolbar
The toolbar located on top of the designer shows some buttons for quickly setting some widget properties. Those buttons change depending on the selected widget. |
![]() |
Custom Widgets
MonoDevelop allows creating custom widget libraries. Widgets from widget libraries will be shown in the toolbox, and can be dropped to any window just like the stock widgets. Custom widgets can be created using the visual designer, or by just creating a subclass of a stock GTK# widget (in the latter case, the widget must be explicitly exported in the project options dialog). See screencast: Creating custom widgets with MonoDevelop. |
![]() |
Support for targeting multiple GTK# versions
MonoDevelop supports targeting GTK# versions other than the ones installed in the system. For example, in a system running GTK# 2.10 it is possible to select GTK# 2.4 as target version, and the generated application will be linked against the 2.4 libraries. Support for those additional GTK# versions must be installed using the add-in manager. |
ASP.NET
MonoDevelop provides support for creating ASP.NET based web sites. Although there is no visual designer for the web pages, the IDE provides a specific project type which simplifies the development of this kind of web sites.
Makefile Support
Working with Makefiles is easy with MonoDevelop:
Visual Studio Support
MonoDevelop has native support for Visual Studio 2005 solutions/projects. You can directly load VS2005 solutions/projects and work with them. Any changes made are written back to the project files. Currently it supports loading C# (.csproj) and VB.NET (.vbproj) projects.
This support is limited to Files, References, Configurations and Compiler options. No custom msbuild tasks are supported.
This native support is not available for Visual Studio 2003 projects. When opening a VS2003 project, MonoDevelop will offer the possibility of converting it to the native MonoDevelop format or to the VS2005 format.
Version Control
MonoDevelop integrates support for several common version control operations. Right now only Subversion repositories can be used.
See the screencast Using Version Control in MonoDevelop for a live demonstration of the main features, which are:
Unit Testing
MonoDevelop features integrated unit testing based on NUnit (http://www.nunit.org/):
Packaging and Deployment
MonoDevelop provides several options for packaging and deploying projects.
Create Package Command
The Create Package command allows creating packages for an existing project. It supports three kinds of packages:
See screencast: Building packages with MonoDevelop | |
Packaging Projects
A packaging project can be added to a solution and can define several packages to be built for the solution. Each package can be of different kind (archives, tarballs) and can include different project selections. | |
Deployment Model
The packaging system takes advantages of the extensible deployment model implemented in MonoDevelop, which allows specifying the target directory of project files. For example, it is possible to specify that a file needs to be copied to the libs directory, or to the shared directory. | |
![]() |
Desktop Integration
MonoDevelop includes options to easily integrate applications in the Linux desktop. It can automatically:
|
Localization
The localization add-in simplifies the work of generating and maintaining translations of projects based on gettext. The add-in provides a new type of project: a Translation Project. It can be added to a solution to provide localization support to all projects in the solution. Adding, compiling and updating the translations is done via the context menu of the translation project in the project browser. When running the Update command, all source files are scanned for translatable strings, and all language files are updated. The add-in also provides a simple .po file editor. [edit]
DocumentationDocumentation about class libraries is provided by Monodoc. The F1 help key is context sensitive, and will show the documentation, for the type upon which the text cursor is positioned, in MonoDoc. [edit]
Command line toolsSeveral MonoDevelop features are available as command line tools. All tools can be executed using the command 'mdtool'.
|
Add-ins
Getting MonoDevelop
Instructions about how to get MonoDevelop are available in MonoDevelop's Download page.
Credits
Contributors
Aaron Bockover, Alberto Paro, Alejandro Serrano, Alexandre Gomes, Alex Graveley, Andrés G. Aragoneses, Andre Filipe de Assuncao e Brito, Antonio Ognio, Ankit Jain, Ben Maurer, Ben Motmans, Christian Hergert, Daniel Kornhauser, Daniel Morgan, David Makovský, Eric Butler, Erik Dasque, Franciso Martinez, Geoff Norton, Gustavo Giráldez, Iain McCoy, Inigo Illan, Jacob Ilsø Christensen, James Fitzsimons, Jeff Stedfast, Jérémie Laval, Jeroen Zwartepoorte, John BouAnton, John Luke, Joshua Tauberer, Jonathan Hernández Velasco, Levi Bard, Lluis Sanchez Gual, Marc Christensen, Marcos David Marín Amador, Martin Willemoes Hansen, Marek Sieradzki, Matej Urbas, Maurício de Lemos Rodrigues Collares Neto, Michael Hutchinson, Miguel de Icaza, Mike Krüger, Muthiah Annamalai, Nick Drochak, nricciar, Paco Martínez, Pawel Rozanski, Pedro Abelleira Seco, Peter Johanson, Philip Turnbull, Richard Torkar, Rolf Bjarne Kvinge, Rusty Howell, Scott Ellington, Thomas Wiest, Todd Berman, Vincent Daron, Vinicius Depizzol, Wade Berrier, Yan-ren Tsai and Zach Lute.
This list may not be complete, some contributors who sent patches by email or via our bugzilla may be missing. Your work is still greatly appreciated. If your name was left off the list, it was not intentional, please send an email to the MonoDevelop mailing list and it will be corrected as soon as possible.
Translators
Catalan | Jonathan Hernández Velasco, Jordi Mas i Hernández |
Czech | David Makovský |
Danish | Martin Willemoes Hansen, Jacob Ilsø Christensen |
German | Gustav Schauwecker, Martin Dederer |
Spanish | Antonio Ognio, Alejandro Serrano, Andrés G. Aragoneses |
French | Vincent Daron, Nicolas Favre-Félix |
Galician | Ignacio Casal Quinteiro |
Hungarian | Gergely Kiss |
Indonesian | Fajrin Azis |
Italian | Alberto Paro, Milo Casagrande |
Japanese | Atsushi Eno |
Dutch | André Offringa |
Polish | Marek Sieradzki |
Portuguese | Vitor Hugo Barros |
Portuguese (Brazil) | Mauricio de Lemos Rodrigues Collares Neto, Andre Filipe de Assuncao e Brito, Rafael Teixeira |
Russian | Maxim Krentovskiy, Semyon Soldatov, Daniel Abramov |
Slovenian | Matej Urbas |
Swedish | Daniel Nylander |
Turkish | Enver Altin |
Chinese (China) | Yu Lindong, Funda Wang |
Chinese (Taiwan) | Yan-ren Tsai |
Thanks
To all of our wonderful testers, who had the patience to use unstable versions of MonoDevelop for everyday use, and managed to post nice bug reports.
To Mike Krüger and the rest of the AlphaSierraPapa team for giving us a great codebase to start from, and continuing improvements.
To Pedro Abelleira, Todd Berman, John Luke, and other early contributors who started this adventure 4 years ago, and who believed in the feasibility of the project.
To all of the active and not so active (we miss you!) MonoDevelop developers.