Is C# a good choice for Ubuntu programming? For example, Unity, or applications that will run on Ubuntu? Am I doing good wanting to learn C# when I'm determined to stick with Ubuntu and develop on it or for it? If not, can you give me reasons why? And which languages would be better than C# for Ubuntu development? I already know C, C++, Java (basics), PHP, MySQL, and Python. I like to learn new stuff, but stuff that worth my time. Is C# worth my time?

If C# is worth my time, here's what I have done and what I need: I installed all mono packages I could find on the Ubuntu standard repositories. Now I want a good tutorial to get me started. I'm a complete noob with C# so a basic tutorial and how to compile run under Ubuntu 12.04 would be great.


I can give you the perspective of someone who has developed an open source application found in Ubuntu (widemargin) using C# and Mono. Mono is very mature and its core libraries are complete.

For developing I would recommend MonoDevelop which is a free and open source IDE like Visual Studio.

There are a few Microsoft libraries that don't work on Ubuntu. These are mainly GUI libraries (winforms works but not well, WPF does not work at all). This is by design. These are native windows GUI libraries and so would look horrible on Ubuntu anyway.

If you are developing a desktop app I would recommend that you use Gtk# which is C# bindings to the native GTK+ framework on Ubuntu. This will give you a completely native looking application on Ubuntu.

If you are interested in cross platform applications then C# is the only language you can use on Windows, Linux, OS X, iOS, Android and WP7. The Mono people recommend that you write a new GUI for each platform using bindings to Native APIs (like Gtk# on Ubuntu), and share the code for your back end. This means your application will look and feel native on each platform.

Learning C# will also allow you to:

  • develop for the new PlayStation Suite, which is C# only,
  • make games with unity3d (in game scripting is C#),
  • make games like Bastion which use monogame,
  • develop websites using ASP.net MVC (what this site runs on).

I developed an Ubuntu application using Mono C# and found it to be a very effective platform. There is a lot of anti-C# attitude in the community due to C# being created by Microsoft, but the reality is that C# does the job, and does it well. MonoDevelop is a great IDE and GTK# is a joy to use for the interface.

Good luck.


You can also use .NET Core instead of Mono which is open source and blazing fast. Even faster than node js for some cases.

.NET CORE
Install .NET Core SDK on Linux Ubuntu 16.04 should be similar to your version

Register Microsoft key and feed

To start installing .NET, you'll need to register the Microsoft signature key and add the Microsoft Product feed. This only needs to be done once per machine.

Open a command prompt and run the following commands:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'  

Install .NET SDK

Update the products available for installation, then install the .NET SDK.

In your command prompt, run the following commands:

sudo apt install apt-transport-https
sudo apt update
sudo apt install dotnet-sdk-2.1.103