Ide's for C# Development on Linux

IDE's for C# development on Linux?

MonoDevelop 2.0 has been released, it now has a decent GUI Debugger, code completion, Intellisense C# 3.0 support (including linq), and a decent GTK# Visual Designer.

In short, since the 2.0 release I have started using Mono Develop again and am very happy with it so far.

Check out the MonoDevelop website for more info.

Developing C# on Linux

MonoDevelop, the IDE associated with Mono Project should be enough for C# development on Linux. Now I don't know any good profilers and other tools for C# development on Linux. But then again mind you, that C# is a language more native to windows. You are better developing C# apps for windows than for linux.

EDIT: When you download MonoDevelop from the Ubuntu Software Center, it will contain pretty much everything you need to get started right away (Compiler, Runtime Environment, IDE). If you would like more information, see the following links:

  • http://monodevelop.com/
  • http://en.wikipedia.org/wiki/MonoDevelop
  • http://en.wikipedia.org/wiki/Mono_%28software%29
  • http://www.mono-project.com/Development_Environments

Tools used for programming in Linux

For the language it really depends what you want to do :

  • C is good for low level software, specially if performance is a priority, otherwise syntax can be painful for a first programming experience.
  • C++ is good for high level software and has a lot of good qualities that C misses (e.g. classes, operator/function overload), but may require some good knowledge of C in case of serious trouble.
  • if it is really your first programming experience, maybe learning with an interpreted language like Python/Perl could be a good idea to begin with.

For the text editor you have:

  • the good old classics: emacs/VIM, I don't want to argue about the choice
  • graphical editors: gedit, gvim, kate. Personally, I really like kate.
  • IDE: kdevelop, anjuta, eclipse, netbeans. Personally I use netbeans for C/C++ development. Again, if it is a first experience, maybe beginning with an IDE is not a great idea to make things clear.

For the compiler, unless you have special needs, you don't need something else than GCC.

C# plugin for Eclipse

Emonic is an actual eclipse plugin for C#: http://emonic.sourceforge.net/.

Here's a handy guide for how to get it set up: http://www.ibm.com/developerworks/library/os-eclipse-migratenetvs/

Monodevelop is great, but won't meet your requirement not to have to work in multiple IDEs.

C# in linux environment

Learn Mono.

The Mono Project is an open
development initiative sponsored by
Novell to develop an open source, UNIX
version of the Microsoft .NET
development platform. Its objective is
to enable UNIX developers to build and
deploy cross-platform .NET
Applications. The project implements
various technologies developed by
Microsoft that have now been submitted
to the ECMA for standardization.

You can use the MonoDevelop IDE.

MonoDevelop is a free GNOME IDE
primarily designed for C# and other
.NET languages.

Moving development from Windows to Linux

I moved from windows to linux 9 or so years ago after spending my initial career using Visual Studio.

The move was relatively easy as the build environment was first and foremost based on Makefiles. Up to this point I used scripts to create a visual studio project for the project each time there were changes.

At that time, the others in my team were using emacs. The learning curve is pretty steep when you come from something like VS, but IMHO it has been well worth the time I invested in it.

What sold me on emacs was the integration with gdb. Emacs has a mode specifically for gdb. Once this mode is started you can enable 'gdb-many-windows'. This gives you a view very similar to that of any debuger environment. Also, one of the first things that I did after moving was to setup the VS key shortcuts. So even after all this time, I have the following in my .emacs file:

(global-set-key [f7] 'compile)             ;; asks for a command to run eg: make
(global-set-key [f4] 'next-error) ;; show the next error
(global-set-key [S-f4] 'previous-error) ;; show the previous error

(global-set-key [f5] 'gdb) ;; start the debugger
(add-hook 'gud-mode-hook ;; allows changes to debugger mode
'(lambda ()
(define-key (current-local-map)
[f10]
'gud-next) ;; F10 does step over
(define-key (current-local-map)
[f11]
'gud-step) ;; F11 does step into
(define-key (current-local-map)
[\S-f11]
'gud-finish) ;; Shift+F11 finish function
(define-key (current-local-map)
[f5]
'gud-cont) ;; F5 does continue.
(gdb-many-windows t))) ;; Set's up a debugger type view

If you haven't used emacs before, then the first thing you need to know is that you type: Ctrl+X Ctrl+C to exit emacs.

If you do decide to give it a go, after loading it up use Ctrl-H then 't'. This starts the emacs tutorial which will give you the basics.

Of course, if you get stuck, then just review or ask a SO question tagged with emacs. This has become a really could source of information for emacs use. I only found out about gdb-many-windows this April from this question!

Is there any good IDE's for code browsing and development better than VS Code in LINUX

JetBrains IDE's clion and pycharm is good enough for C and Python under Linux.

Feasibility of C# development with Mono

  1. (Strange, markdown starts the enumeration with one, even though I began with 2...)

  2. Yes, you can, but you're limited with 3rd-party components, because the internal implementation is different, and last time I checked (not very long ago), the Mono WinForms implementation made my test app look rather strange (owner-drawn list view). It is not really recommended, though Mono claims that it's now completely WinForms-2.0-compatible.

  3. MonoDevelop is/was a SharpDevelop branch, with the latter having solution support. I don't know if MonoDevelop has. But the cool thing is, you can just develop with Visual Studio and run your compiled apps on Mono. And Mono is, by the way, also available for Windows.

  4. Yes, it does, as far as the CLR goes. As Marc Gravell already wrote, the Windows Foundation libraries are missing, as are a few other (System.Management, for example). But things should mostly work, including ASP.NET 2.0. Mono's application portability guidelines are a good read on this.

What tools does Linux programmer use to develop programs?

No, it is not true. People just use what they prefer most. The definition of IDE is also a bit weak. On Linux, many text editors are very powerful, for example Emacs. You could perhaps call that text editor already an IDE. Though, to point out a difference, Emacs (and other text editors) were originally made to be very general and write just anything with it, and handy tools/functions for developing C/C++/whatever were added later. And their programming language support mostly* only covers syntax highlighting, not much more.

Applications like KDevelop or Eclipse were initially developed to be a development environment and most of these still have more/better functionality to develop. I call these IDEs.

There are many different IDEs on Linux, some more powerful, some less powerful, some for one specific programming language, some for many different. Depending what language you want to write in, some are better than others.

Also, some are more bloated than others. That is one of the main reasons people just use a text editor because it is very snappy, very stable and very fast.

I'll list some IDEs which I think are the best in term of functionality specific to that language (like code completion and many other stuff).

For C/C++:

  1. KDevelop

    For what I know there is no IDE which has better support for C/C++. I didn't found any other tool which handles C++ in such a way that it really understands STL, which is important that you can use autocompletion for STL containers and such stuff. It even understands macros, so autocompletion even works in very complicated cases with many macro-tricks. I work on a ~250k loc C++ project and it has understood the full code. (To use the extended C/C++ support though, you have to activate it in project settings, it is disabled by default. Also, to have full STL support, I preparsed the STL headers and added that to the C++ support in project settings manually. Don't know if that is still needed. But I guess it still doesn't work out-of-the-box.)

    Also, KDevelop is very snappy and fast (developed itself in C++), compared to many other IDEs. It loads almost as fast as any other simple text editor and feels as snappy as such. And that also doesn't change for very big projects. Whereby I myself just use it for editing/writing the code, not managing the compiling of the project. It has automake support but I prefer to use CMake. But KDevelop works fine with that: when I press compile in KDevelop, it just starts a make.

    Initially, KDevelop was developed as a development tool for KDE applications but it works fine for any C/C++ project. I actually have never done any Qt/KDE project with it. Also, support for other languages like Ada were added later on but I haven't tried that.

    I don't know any other IDE which has better support for C++. Please comment me if I am wrong here. I didn't checked many other IDEs anymore in the last one or two years.

  2. Eclipse

    You probably know that already. Initially it was developed in and for Java. Later, support for C/C++ was added.

    I want to note this IDE because I know many people using it. I am not really recommending it though because I have mostly made bad experiences.

    The C++ support is good, not perfect though; there are cases where autocompletion doesn't work.

    The possibilities and features of the IDE itself are very rich. I don't know many other IDEs which are such big (bloated). That, together that it is in Java, makes it often feel very slow and sometimes hanging while you are writing something. Also the memory usage is very high.

  3. Qt Creator

    Initially for Qt development, but also fine for any other C/C++ projects. Very good qmake support.

    The C++ support is nice, only some smaller problems. Also, the IDE is snappy and fast.

    After all, I found myself a bit too limited in this IDE and the C++ support in KDevelop was still better, so I kept using KDevelop for most C++ projects. But when you do a Qt project, Qt Creator is great because it also comes with some nice GUI builders for Qt and other nice Qt tools.

  4. CLion

    (Commercial, but free version.) A newcomer by JetBrains. Very promising.

For Java:

  1. Eclipse

    See my comments above.

    For Java, I think this is the most common IDE on Linux. The same disadvantages as noted above apply here also but I don't know any better IDE, so I keep using Eclipse when I develop in Java.

  2. NetBeans

    Also in and for Java. Never tried that because it was not really supported in my Linux distribution (I think because of licensing issues, don't remember exactly anymore).

    I have seen many flames in the past about NetBeans-vs-Eclipse. Don't know actually about the current state.

For C#:

  1. MonoDevelop

    Also haven't tried that myself, only have heard that it is one of the best tools for C#. Just wanted to note that because you referred to Visual Studio and you may be interested in C#.

I want to add some words to the usage of the terminal:

In addition to such an IDE, it is very common to use a terminal in parallel to your IDE. The terminal and all its shells together with all the Unix tools and other tools is very powerfull and you can do many tasks in a very simple way. Once you get a good overview over all the Unix tools and how to use them, they can save you a lot of work.

There are often tasks in a project which needs to be done again and again. That can be simple tasks like how you manage your source code and distribute it with your teammates or also more complex tasks.

For example, when you do some server-client work and start perhaps 10 servers and 100 clients on different machines, let them all doing something; then grep the output for some regular expressions and collect all that and do some performance tests over 10 seconds and repeat that progress several times - such things are all trivial once you manage the terminal.

You will find yourself ending up having just several scripts written which do all that for you. Writing such scripts is mostly straight-forward.

This goes perhaps a bit off-topic but I just wanted to have that noted because it is a common and powerfull way to work. When you switched from Windows to Linux as a developer, you should take a look at all those additional possibilities you have now. Those are the main reason for me (and many others) why I prefer developing on Linux/Unix than on any other system.


(*) Again some words to Emacs: Emacs can be extended my many tools and plugins which make it a very rich system with the same functionality as an IDE. For example, there is CEDET which comes with real language support, i.e. you also have features like smart word completion / IntelliSense and also a project management system. I haven't tried it myself but I will do that in the next weeks.



Related Topics



Leave a reply



Submit