Release notes for MonoDevelop 0.14

MonoDevelop 0.14 has been released. MonoDevelop is a GNOME IDE primarily designed for C# and other .NET languages.

This release contains lots of improvements, new features and bug fixes. Read below.

Installing MonoDevelop

MonoDevelop Dependencies

Compiling the following order will yield the most favorable response.

  • Gtk# 2.8.0
  • Gtksourceview#-2.0 0.10
  • Monodoc 1.0
  • Gecko#-2.0 0.10
  • MonoDevelop 0.14 Source

You can download MonoDevelop 0.14 source from here. The Mono download site contains packages for everything for many popular distros. You can also check the mono redcarpet channel.

This release of MonoDevelop needs at least Mono 1.1.10 to run.

New Features

Improved Toolbox and Properties pad

The Toolbox and Properties pads have been improved, and they now are used by the Gtk# designer (so there isn’t anymore a separate widget palette).

The new Properties pad can now be used to change properties of project items, such as project files.

(Lluis Sanchez)

Subversion add-in

The Subversion add-in will now prompt the user when a password or user name is required. It allows using the add-in to access Subversion repositories which require authentication, such as SourceForge. (Lluis Sanchez)

The add-in now support more recent versions of Subversion, such as the ones distributed by Debian or Ubuntu. (Jeff Stedfast)

Refactory operations

Several new refactory operations have been added to the right-click context menu of the source editor. These are:

  • Rename: Renames the selected language item in the current source file as well as all other source files referencing it.
  • Implement Interface: Injects stub methods, properties and events of the selected interface into the currently selected class.

Implement Interface (explicit)

  • Encapsulate Field: Encapsulates the selected class field in a PascalCased property of similar name.

Encapsulate Field dialog

(Jeff Stedfast)

New Open Solution File Dialog

The new Open File in Solution command provides a quick file search dialog which can be used to locate a project file by name or by class name.

(Zach Lute)

Class and member selectors

The text editor has a new class and member selector which allows quick navigation through the file. (James Fitzsimons)

500px

Improved Smart Indenting for CSharp

The Smart Indent logic has been completely replaced with a new 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.

(Jeff Stedfast)

Project export/conversion

The new Export Project command allows converting a project to another file format, such as Visual Studio 2005. (Lluis Sanchez)

This is a screenshot of the .desktop file editor: 500px

New packaging features

This release includes new features for packaging projects. The new Create Package command shows a wizard which allows creating 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 (based on Automake).

The new packaging add-in also allows creating a new type of project: a Packaging Project. 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.

The packaging add-in takes advantages of the new deployment model, 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 new packaging project

(Lluis Sanchez)

Desktop Integration

MonoDevelop now 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.

The .desktop file editor

(Lluis Sanchez)

Improved New Project Dialog

The New Project dialog is now a two-step wizard. The first step of the wizard allows choosing the kind of project to create and its location and name (it is basically the same dialog in previous versions).

The second step is new, and allows selecting a set of features to be enabled in the new project. Some of the features may be already enabled depending on the kind of project. Other features can be enabled by the user.

The features currently supported are:

  • Gtk# support: allows enabling Gtk# designer support on any project.
  • Packaging: allows adding packaging projects to the solution.
  • Unix integration: adds support for .desktop files and launch scripts.

Step 1

Step 2

(Lluis Sanchez)

A Navigation toolbar has been implemented allowing 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.

On the other hand, the Go to declaration command will now work for types defined in assemblies which contain debug information.

(Jeff Stedfast)

New features in the Gtk# designer

There are several improvements in the Gtk# designer:

  • The designer now uses better defaults for widget spacing and other common widget properties. The dialog template now includes ok/cancel buttons.
  • Support for internal windows and custom widgets.
  • Image files assigned to buttons or other widgets are now automatically added to the project, and scheduled for deployment.

(Lluis Sanchez)

Other features

  • The New File dialog now allows adding the new file to a project. (Jeff Stedfast)
  • Several improvements in VS2005 support and makefile integration. (Ankit Jain)
  • Added new options for setting a custom font for the treeview pads. (Jeff Stedfast)
  • Added highlighting current line functionality when gtksourceview supports it and drawing of white spaces and control chars. (David Makovský)
  • Added option for customizing the default file header to be shown when creating new files (Mike Krüger)
  • The Visual Basic add-in is now based on the vbnc compiler. (Miguel de Icaza)

Bug Fixes

Here is a list of bugs fixed in this release:

  • 78129 Add “Exclude from project” in contextual menu of a file in the solution explorer
  • 79109 Stetic Image widget has runtime exception when using an image from file
  • 79456 Annoying splashscreen
  • 79971 Help Error
  • 80023 Support for .config files provided by references
  • 80081 Autoindent does not work when resuming previous code
  • 80123 Editor has strange semantics for closing brace
  • 80433 MonoQuery causes InvalidCastException for getting Npgsql users
  • 80587 Monodevelop fails to load up IDE when launched from icon clicking.
  • 80651 Resources of imported VS projects have invalid names
  • 80704 CodeCompletion parser falls in loop
  • 80783 Custom widgets with events cause exception
  • 80875 Class created with Gtk# designer is always public
  • 80883 Parameter hint doesn’t recognize strings
  • 80909 Automatically suggestion for Classes as you type
  • 80911 Crash on Key Press in Editor Window
  • 80927 SVG icons not resized properly
  • 80932 Shift tab and tab don’t behave similarly
  • 80941 Subversion/Version Control: password prompt
  • 80951 Monodevelop crashes just before displaying the main window
  • 80963 click a tab results in moving tab
  • 80973 Saving file with mixed line ending it’s not written correcty
  • 80988 .config files are not copied for assembly references
  • 81012 Recent Solutions problem
  • 81013 Widgets Palette not displaying (occasionnal)
  • 81014 Window editor “Select” submenu problem with notebook widgets
  • 81015 Window editor problem when deleting the whole contents
  • 81033 Text values of combo are not translatable
  • 81065 Smart indent confused by extra tabs on end of lines
  • 81077 monodevelop still use mbas to compile VB projects
  • 81078 Const fields are not displayed on CodeCompletion
  • 81085 Unable to click ‘okay’ on messagebox
  • 81086 Empty ScrolledWindows shouldn’t get a Viewport child
  • 81097 Monodevelops hangs after renaming a project
  • 81114 VBnet Gtk# Empty Project can not be built
  • 81131 The Preprocessor Keyword “pragma” is unknown
  • 81143 ToggleButton duplicates properties
  • 81151 ctrl-k deletes entire line no matter where cursor is
  • 81152 MD crashes when project file references GUI directory that doesn’t exist
  • 81163 Cannot use case-insensitive assembly reference from VS2005
  • 81166 crash on exit
  • 81168 override generated code ignores spaces setting (uses tabs instead)
  • 81170 another crash on exit
  • 81184 Projects are not added to version control when added to a controled solution
  • 81185 Subversion option should not be shown if subversion is not installed
  • 81212 build breaks when update-mime-database is missing
  • 81215 “Draw Indicator” always on for checkbox/checkbutton
  • 81216 Ident at the end of file - segfault
  • 81220 Opening non-existing solution -> freeze
  • 81221 Prebuild, postbuild custom commands are totally wrong
  • 81222 Bad dependency checking when building projects from one solution
  • 81234 Configure script assumes MonoQuery incorrect
  • 81239 Monodevelop 0.13.1 - Stetic crashes
  • 81245 Project on the welcome page are not erased if no longer exist
  • 81246 Paste widget has no ctrl + V association
  • 81248 Gdk.Pixbuf path is broken on deployment
  • 81261 code generation in stetic can be safer
  • 81269 Subversion add-in exception while using “svn propset svn:externals” on some directory blocks almost all MD menus and shows an Exception
  • 81286 New project crash
  • 81313 gtk timeout crash
  • 81336 Encoding problem with solution file
  • 81365 Stetic/MD generating gui bug for Visible property
  • 81441 crash on start …
  • 81447 scrolled area not a ‘container’
  • 81459 NRE when save VS2005 project option changes
  • 81470 AutoTools Add-in copy reference in the bad folder
  • 81471 Broken GUI with Gtk# from svn head
  • 81531 Add New Nested Solution
  • 81542 Codecompletion incorrect when field name equals class name
  • 81543 Code Completion does not handle partial namespaces
  • 81547 Shift+f8 crashes monodevelop
  • 81549 Delete key on File rename behaves strange
  • 81575 Copy/paste not working properly
  • 81590 Notebook’s Swap Tabs fails
  • 81593 Find in files is buggy
  • 81605 Adding a nested solution to a solution does not work properly
  • 81632 Comment lines comments out an extra line
  • 81644 BooBinding causes NullReferenceException when closing MD
  • 81648 Allow multiple MD instances
  • 81661 Monodevelop add unneeded package check to the ./configure script when deploying a partial solution
  • 81683 gui.stetic truncated to 0 bytes
  • 81716 monodevelop crashes on rename of external resource
  • 81751 Crash after SVN commit
  • 81758 Stetic generates changes for unmodified projects
  • 81761 Menu editor not hidden when the menu bar loses the focus
  • 81762 Widget selector combobox shows fully expanded tree
  • 81765 Focus set to class selector when switching to an editor window
  • 81766 The subversion add-in does not work on Debian based distros
  • 81769 Text editor crashes the OS
  • 81776 .csproj/.vbproj with encoded filenames doesn’t show up correctly
  • 81785 ToggleButton is not initially active when set to active and run
  • 81820 Unable to change project settings

API and implementation changes

There are many improvements in the MonoDevelop API:

  • The add-in engine is now based on the new Mono.Addins library. This is an important change since it will allow sharing tools and documentation with other projects which have started using this library.
  • Many performance and memory usage improvements. Startup time has been greatly improved.
  • A new deployment model.
  • Support for property providers, which allow using the property pad to edit the properties of any element of the IDE.

Credits

Contributors

The following people contributed in this release:

Lluis Sanchez, Jeff Stedfast, Michael Hutchinson, Ankit Jain, David Makovský, Wade Berrier, Miguel de Icaza, Zach Lute, James Fitzsimons, Ben Motmans, Mike Krüger

This is the list of all project contributors:

Alberto Paro, Alejandro Serrano, Alexandre Gomes, Alex Graveley, Andrés G. Aragoneses, Antonio Ognio, Ben Maurer, Ben Motmans, Christian Hergert, Daniel Kornhauser, Daniel Morgan, David Makovský, Erik Dasque, Franciso Martinez, Gustavo Giraldez, Iain McCoy, Inigo Illan, Jacob Ilsø Christensen, James Fitzsimons, Jeff Stedfast, Jeroen Zwartepoorte, John BouAnton, John Luke, Joshua Tauberer, Jonathan Hernández Velasco, Levi Bard, Lluis Sanchez Gual, Martin Willemoes Hansen, Marek Sieradzki, Matej Urbas, Michael Hutchinson, Miguel de Icaza, Mike Krüger, Nick Drochak, Muthiah Annamalai, Pawel Rozanski, Pedro Abelleira Seco, Peter Johanson, Philip Turnbull, Richard Torkar, Scott Ellington, Todd Berman, Vincent Daron, Wade Berrier, Yan-ren Tsai and Zach Lute.

This list is not complete, it is missing some contributions sent in to the list and via our bugzilla. Your work is still greatly appreciated. If your name was left off the list, it was not intentional, please send an email to the list and it will be corrected as soon as possible.

Translators

  • ca - Jonathan Hernández Velasco, Jordi Mas i Hernández
  • cs - David Makovský
  • da - Martin Willemoes Hansen, Jacob Ilsø Christensen
  • de - Gustav Schauwecker, Martin Dederer
  • es - Antonio Ognio, Alejandro Serrano, Andrés G. Aragoneses
  • fr - Vincent Daron, Nicolas Favre-Félix
  • gl - Ignacio Casal Quinteiro
  • it - Alberto Paro, Milo Casagrande
  • ja_JP - Atsushi Eno
  • pl - Marek Sieradzki
  • pt_BR - Mauricio de Lemos Rodrigues Collares Neto, Andre Filipe de Assuncao e Brito, Rafael Teixeira
  • pt - Vitor Hugo Barros
  • ru - Maxim Krentovskiy, Semyon Soldatov
  • sl_SI - Matej Urbas
  • zh_CN - Yu Lindong, Funda Wang
  • zh_TW - Yan-ren Tsai

Thanks

All of our wonderful testers who put up with the insane dependencies, the constant breakage and still managed to post nice bug reports.

Mike Krueger and the rest of the AlphaSierraPapa team for giving us a great codebase to start from, and continuing improvements.

All of the active MonoDevelop developers.