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:

Code completion

Shows a list of types, methods, fields, etc, depending on the editing context. Provides information about method overloads, and shows documentation if available from Monodoc.

Parameter information

When typing a method invocation shows the parameters that the method accepts.

Type information tooltips

Move the mouse over an identifier, and MonoDevelop will show a tooltip describing what the identifier is, together with full information about its type.

On-the-fly error underlining

Syntax errors are highlighted on the fly in the editor, without the need for compilation.

Code Navigation

The context menu in the code editor can be used to navigate quickly around a codebase by jumping to the definition, type, or base definition of an identifier. It can also be used to search for references and derived classes.

Smart indent

The text editor features a smart indent engine which attempts to keep state as you type and bases indent level on the entire state of the file and not just the indent level of the previous line.

Auto-generation of XML comment tags

The editor will enter documentation stubs automatically after typing "/" three times in a comment context. The generated stubs are context-sensitive which will produce the correct default of comments and for existing methods, it will also generate parameter names.

Standard Header

The Standard Header manager allows specifying the header to use when creating new files. You can write your own header, or choose one of the default headers provided.

Code templates

Simple code templates can be activated by entering the template's keyword, such as 'scwl', and pressing the Tab key. Templates may be added and edited in the Editor Preferences.

Class and Member Selectors

The text editor has a class and member selector which allows quick navigation through the contents of the file.

Navigation History

The navigation toolbar allows developers to navigate backwards and forwards in their source file position history, either by using the quick Navigate Back/Navigate Forward toolbar buttons or by selecting a particular navigation point via the history dropdown menus in the toolbar.

Refactoring operations

The refactoring operations simplify changes like renaming types and type members, encapsulating fields, overriding methods, or implementing interfaces.

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.

ASP.NET Web Projects

ASP.NET projects can be created, built and tested with xsp. These projects fully support the use of CodeBehind partial classes, auto-generating control references in CodeBehind classes and grouping CodeBehind classes with their parent page. They also feature several templates, support for assembly references in web.config, and type/member compatibility resolution.

Deployment of ASP.NET Projects

ASP.NET projects can be deployed to local directories using the Web Deploy command. If the FUSE "sshfs" filesystem is available, it can be used to deploy projects to remote servers.

Web References

MonoDevelop provides an "Add Web reference" command, which can be used to create a reference to a web service. This command will generate the proxy classes needed to access the selected web service.

Makefile Support

Working with Makefiles is easy with MonoDevelop:

Makefile Generation

MonoDevelop can generate a complete set of makefile scripts for a solution. Two types of makefiles are supported: Autotools based makefiles, and simple makefiles. Simple Makefiles don't depend on Autotools, and are useful for projects which don't need all the features that Autotools provides, but still need to provide the most common targets such as build, install, dist and distcheck.

Makefile Integration

MonoDevelop supports integration with Makefiles for projects. This integration covers the following features:

  • Delegating build, clean and/or execute operations to Makefiles

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:

Publish and Checkout

Support for the Publish and Checkout commands, which can be used to import projects into a version control repository, and to get a project from a repository. There is a repository selector which allows registering common repository locations.

Publishing a solution is as easy as selecting the solution, clicking on the Publish command, and selecting the target repository. MonoDevelop will create a new module and will import only the relevant project files.

Status View

The status view allows reviewing changes done in files, and allows entering commit comments for each file. Comments are stored on disk, so if you close MonoDevelop and start it again, the status window will show the comments you entered.

Solution pad integration

Version control is fully integrated in the solution pad, so operations like renaming, deleting or moving files or folders will be handled by the version control system.

ChangeLog generation

The ChangeLog add-in can generate ChangeLog entries for the changes made in the committed files. It supports updating several ChangeLog files in a single commit. Every project can have a ChangeLog location policy (which can be for example: create a single ChangeLog in the root project directory, one in each first-level subdirectory, or one in every subdirectory). When committing a set of changes MonoDevelop will locate and add the comments to the correct ChangeLog for every change (creating a new one if necessary).

Unit Testing

MonoDevelop features integrated unit testing based on NUnit (http://www.nunit.org/):

Tests Tree

The integrated NUnit support can be seen in the Test Tree pad where all the libraries in the solution that contain unit tests, and the text fixture hierarchy for each of them is shown. The tree is automatically updated every time the libraries are built. The test tree makes it easy to run tests by just double-clicking on them, and it shows the result of the the last test run using status icons.

NUnit Assembly Group Project

This kind of project is a collection of references to existing NUnit assemblies. This is useful if you have some tests in a dll you want to run, but the dll is generated by some other process outside of MonoDevelop. The tests are shown in the test tree just like any other tests in the solution.

History Panel

The NUnit add-in keeps a history of test runs and the results, and you can easily browse them using the results chart and the test details window. The chart shows the progress of successful runs and failures graphically, and it is also used as a date selector. The list below the chart shows a summary of results for the test selected in the tree and at the date selected in the chart.

Tests Results Pad

It shows a list of tests executed in a test session. Tests can be filtered by result. In case of failure it will show the failure cause and the stack trace.

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:

  • An archive of sources, which allows choosing the file format (e.g. MonoDevelop or VS2005).
  • An archive of binaries.
  • A tarball.

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.

The .desktop file editor Desktop Integration

MonoDevelop includes options to easily integrate applications in the Linux desktop. It can automatically:

  • generate launch scripts
  • create a .desktop file describing the application. Once installed the application will be shown in the desktop application menu.
  • create .pc files for libraries.

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.

Documentation

Documentation 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.

Command line tools

Several MonoDevelop features are available as command line tools. All tools can be executed using the command 'mdtool'.

  • mdtool build: Project and solution build tool.
  • mdtool project-export: Project conversion tool.
  • mdtool generate-makefiles: Generates makefiles for a solution.
  • mdtool setup: Add-in setup utility.
  • mdtool gsetup: Graphical add-in setup utility.
A translation project and the .po file editor

Add-ins

MonoDevelop provides an add-in manager that can be used to download and install/uninstall add-ins.

The add-in manager can be started from the MonoDevelop IDE (Tools menu), from the command line (mdtool gsetup), or you can use the command-line version (mdtool setup).

With the add-in manager it is possible to install add-ins from on-line repositories, and keep track of updates. You only need to register the repository url (there is a button in the add-in manager for this), and select the add-ins you want to install. The manager will take care of dependencies between add-ins, or between add-ins and the core assemblies.

MonoDevelop will automatically check for add-in updates once a day (you can change this periodicity in the Add-ins options panel of the preferences dialog).

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.

리눅스 기반에서 코딩 연습이 필요해서 VMWARE에 Ubuntu를 설치.
그런데, 마우스의 휠 버튼이 동작하지 않는다.
구글링 통해 해결책을 찾았으니 안되시는 분들은 참고 하시라


마음에 드는 프로그래밍용 폰트 Consola, Dina

Dina 추천!!

+ Recent posts