Navigation

FAQ

From MonoDevelop

Table of contents

General Questions

What is MonoDevelop?

MonoDevelop is a free GNOME IDE primarily designed for C# and other .NET languages, although open to any kind of language. However, MonoDevelop hopes to be more than just an IDE: it intends to be an extensible platform upon which any kind of development tool can be built.

MonoDevelop was originally a port of the SharpDevelop IDE (http://www.icsharpcode.net/OpenSource/SD/) to Gtk#, but it has evolved a lot since the initial port.

There are numerous goals that MonoDevelop hopes to achieve. Some of these are:

  • To create a best of breed development environment for Unix systems for Mono.
  • Since its written in Gtk#, and we like Gtk# and we get good support from Gtk#, most likely it will add functionality to improve the Gtk# experience.
  • We want to integrate the tools we have been building so far, so things like MonoDoc, NUnit-Gtk and the debugger should target MonoDevelop.

Under which license is MonoDevelop available?

MonoDevelop is licensed under the GPL which can be read at [1] (http://www.gnu.org/copyleft/gpl.html). All the source code is available through the Subversion file repository. Read the Download page for directions on downloading the source.

Why another IDE for GNOME?

A unique platform like Mono deserves a unique IDE like MonoDevelop that can take full advantage of the framework capabilities. Features like code completion, integrated unit testing, class browser, etc. would be much more difficult to implement for example in a C based IDE.

The Mono platform also provides some features that are ideal for the development of an IDE. Thanks to Mono, MonoDevelop offers:

  • a fully object oriented API
  • a very powerful add-in engine (based on the reflection capabilities of the framework, and which takes advantage of the portability of .NET assemblies)
  • easy support for multiple languages, both for user projects and for writing add-ins.

Moreover, Gtk# rocks.

Does MonoDevelop have an integrated GUI designer?

MonoDevelop 0.10 and later has an integrated GUI designer based on Stetic (http://mysterion.org/~danw/blog/2005/03/stetic).

Does MonoDevelop work on Windows?

Yes. MonoDevelop can be built and run on Mono on Windows. Patches to do this have recently been committed to mono's subversion repository. Currently, there is no Windows Installer for MonoDevelop.

Here is an email from Tak (Levi Bard) describing how to build and run MonoDevelop on Mono on Windows.

http://lists.ximian.com/pipermail/monodevelop-list/2006-September/004442.html

MonoDevelopWin32 page for more info.

Does MonoDevelop work on Mac OSX?

Yes, it its included in the latest installers on the Mono website (http://www.mono-project.com/Downloads).

Can I compile my project with gmcs?

Yes. Right click on your project, select 'Options'->'Runtime' and select '2.0' from the drop-down list.

An Addin is causing MonoDevelop to crash at startup, how do I remove it?

The Addin manager can be launched independently with the command 'mdtool gsetup'

Can I get the Debugger Addin working in MonoDevelop?

No. Due to recent changes to the Mono Debugger, the Debugger Addin for MonoDevelop is not functional. We expect to have an updated add-in in the following MonoDevelop releases.

Can I import my Visual Studio 2K5 project into MonoDevelop?

Yes. As of MonoDevelop 0.13, Visual Studio 2005 projects can be opened, manipulated, and saved.

I added an assembly to the GAC, why doesn't it appear in the assemblies list when I try to add a reference in a MonoDevelop project?

Bacause MonoDevelop does not look for assemblies in the GAC. MonoDevelop uses pkg-config to locate installed packages and get the list of assemblies that each package provides. A package specifies this list of assemblies in a .pc file which has to be installed in the standard pkg-config directory.

If you are developing a library, MonoDevelop can automatically generate a .pc file for your project (in the project options dialog, select "Linux Deployment Settings", and check the "Generate .pc file" option).

Troubleshooting

MonoDevelop installed with installer not working

If you have problems running a MonoDevelop release installed using the installer, take a look at the Installer FAQ (http://www.mono-project.com/InstallerInstructions).

MonoDevelop fails to start with the error message: Couldn't create a remote process

MonoDevelop uses a shared process remoting facility named mdhost. This inter-process communcation tool requires that your network settings are correctly configured.

First of all, the loopback device (127.0.0.1) be up and functional. You can check this with the following command.

    user@host$ ifconfig lo

If the device is up and functional, you should see a line similar to the following. Check for UP in the output.

    lo
         inet addr:127.0.0.1  Mask:255.0.0.0
         UP LOOPBACK RUNNING  MTU:16436  Metric:1

You may also get this error message if your eth0 devide is configured with an incorrect IP address. There is a known issue with zeroconf and the ifup utility (from Debian). See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=351540.

When the network is not properly configured you will see an exception similar to the following during startup. This is fatal and will prevent MonoDevelop from starting.

    System.TypeInitializationException: An exception was thrown by the type initializer for MonoDevelop.Ide.Gui.IdeApp ---> System.ApplicationException: Couldn't create a remote process.
    in <0x00126> MonoDevelop.Core.Execution.ProcessHostController:CreateInstance (System.String assemblyPath, System.String typeName)
    in (wrapper remoting-invoke-with-check) MonoDevelop.Core.Execution.ProcessHostController:CreateInstance (string,string)
    in <0x0005e> MonoDevelop.Core.Execution.ProcessService:CreateExternalProcessObject (System.Type type, Boolean shared)
    in <0x00035> MonoDevelop.Projects.Parser.AssemblyCodeCompletionDatabase:GetExternalHelper (Boolean share)
    in <0x0006c> MonoDevelop.Projects.Parser.AssemblyCodeCompletionDatabase:.ctor (System.String baseDir, System.String assemblyName, MonoDevelop.Projects.Parser.ParserDatabase parserDatabase)
    in <0x00071> MonoDevelop.Projects.Parser.ParserDatabase:Initialize ()
    in <0x00029> MonoDevelop.Projects.Parser.DefaultParserService:CreateParserDatabase ()
    in <0x00107> MonoDevelop.Ide.Gui.ProjectOperations:.ctor ()
    in <0x00031> MonoDevelop.Ide.Gui.IdeApp:.cctor ()--- End of inner exception stack trace ---
    
    in <0x00000> <unknown method>
    in <0x00770> MonoDevelop.Ide.Gui.IdeStartup:Run (System.String[] args)

MonoDevelop fails to start with the error message: Unix transport error

This is due to a bad interaction between Mono 1.1.13 and Boo.

To fix this problem, you have three options:

  • Upgrade Boo to 0.7.5, or
  • Uninstall the boo add-in, by running "mdtool gsetup", or
  • Upgrade Mono to 1.1.14 or upper

This is the stack trace :

System.Runtime.Remoting.RemotingException: Unix transport error.

Server stack trace: in <0x0008f> Mono.Remoting.Channels.Unix.UnixMessageIO:ReceiveMessageStatus (System.IO.Stream networkStream, System.Byte[] buffer) in <0x0017c> Mono.Remoting.Channels.Unix.UnixClientTransportSink:ProcessMessage (IMessage msg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, ITransportHeaders responseHeaders, System.IO.Stream responseStream) in <0x00252> Mono.Remoting.Channels.Unix.UnixBinaryClientFormatterSink:SyncProcessMessage (IMessage msg)

Exception rethrown at [0]:

---> System.Runtime.Remoting.RemotingException: Connection closed

in <0x0006c> Mono.Remoting.Channels.Unix.UnixMessageIO:StreamRead (System.IO.Stream networkStream, System.Byte[] buffer, Int32 count) in <0x00044> Mono.Remoting.Channels.Unix.UnixMessageIO:ReceiveMessageStatus (System.IO.Stream networkStream, System.Byte[] buffer)--- End of inner exception stack trace ---

in <0x0008f> Mono.Remoting.Channels.Unix.UnixMessageIO:ReceiveMessageStatus (System.IO.Stream networkStream, System.Byte[] buffer) in <0x0017c> Mono.Remoting.Channels.Unix.UnixClientTransportSink:ProcessMessage (IMessage msg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, ITransportHeaders responseHeaders, System.IO.Stream responseStream) in <0x00252> Mono.Remoting.Channels.Unix.UnixBinaryClientFormatterSink:SyncProcessMessage (IMessage msg)

Enabling the NUnit Add-in

The NUnit addin requires mono 1.1.9+. This is do to some cross-appdomain bug fixes. Debian users currently also have another particular problem in that NUnit packages are separated from Mono, and do not include the proper pkg-config files.

Configure monodevelop with the following command.

    ./configure --enable-nunit

Debian users only

Install the nunit and libnunit-cil packages (requires unstable at this moment). Due to the separate packaging of nunit, we need to make a symlink so that monodevelop knows where to find the pkg-config file.

    ln -s /usr/lib/pkgconfig/nunit.pc /usr/lib/pkgconfig/mono-nunit.pc
Retrieved from "http://monodevelop.com/FAQ"