我能在Ubuntu上用C#编写程序吗?

我被迫学习和练习C#,有没有任何支持并可以用来编写C#程序的应用软件?

10你尝试过什么?使用简单的谷歌关键词组合“C# Ubuntu”已经揭示了答案。 - gertvdijk
好的,我会投票删除这个问题。 - AmirRazoR
3从我的经验来看,很可能你的大学课程会假设你使用的是Windows操作系统,并且可能会在C#中使用一些仅适用于Windows的功能,这些功能在Mono上并不总是能够很好地对应,比如WinForms(尽管我认为Mono可能已经实现了WinForms,但我不确定)。你可能会遇到问题。 - Drake Clarris
嗯,自从我开始使用Ubuntu以来,我一次也没有回到Windows。但是我会牢记这个建议的。 - AmirRazoR
3@AmirRazoR Mono运行时支持Windows Forms。然而,我不知道Ubuntu中是否有任何集成开发环境支持可视化创建它们。如果你的课程是关于C#语言,我猜它可能不会涵盖Windows Forms,但也有可能。如果你确实需要使用Windows操作系统,你可以考虑在Ubuntu系统上运行Windows的虚拟机。虚拟化Windows需要你有一个副本。如果你需要比虚拟机提供的更好的图形加速,你可以在Windows上运行Ubuntu的虚拟机。 - Eliah Kagan
可能也可以在WINE中使用VS,但不完全确定。 - Drake Clarris
我也有同样的问题。我谷歌了一下,它把我带到了这里。有些人像gertvdijk和AmirRazoR想要删除这个问题,但他们可能是专家,而我们只是初学者。他们可能知道答案,但我们不知道。多亏了这个问题,我找到了解决办法。让这个问题为像我们一样的初学者提供帮助。 - Buddhika Ariyaratne
4个回答

是的,你可以使用mono

如果想要一个好用的集成开发环境,请尝试使用monodevelop:

sudo apt-get install monodevelop

这也会引入所有必要的运行时。

1这是对我有效的方法:sudo apt install mono-devel - Gathide

你正在寻找的是Mono,这是引用自项目网站的一段描述:

一个开源、跨平台的C#和CLR实现,与Microsoft.NET二进制兼容

Mono还附带了一个集成开发环境(IDE):MonoDevelop。这两个软件都已经为Ubuntu打包好了。 Mono

Install via the software center

MonoDevelop

Install via the software center

这个最后的包依赖于第一个包。安装这个包将自动安装其他包。

我现在正在安装Monodevelop,这样会同时安装Mono吗?还是我需要运行特定的命令来安装它? - AmirRazoR
@AmirRazoR:是的,它会安装Mono。我还更新了我的答案以添加这些信息。 - Andrea Corbellini

您可以使用.NET Core在Linux上开发C#应用程序:https://www.microsoft.com/net/core

安装完成后,在终端中键入dotnet new以获取生成的应用程序模板列表,供您开始使用。

截至目前的.NET Core 2.0版本,以下是列表:

Templates                                         Short Name       Language          Tags               
--------------------------------------------------------------------------------------------------------
Console Application                               console          [C#], F#, VB      Common/Console     
Class library                                     classlib         [C#], F#, VB      Common/Library     
Unit Test Project                                 mstest           [C#], F#, VB      Test/MSTest        
xUnit Test Project                                xunit            [C#], F#, VB      Test/xUnit         
ASP.NET Core Empty                                web              [C#], F#          Web/Empty          
ASP.NET Core Web App (Model-View-Controller)      mvc              [C#], F#          Web/MVC            
ASP.NET Core Web App                              razor            [C#]              Web/MVC/Razor Pages
ASP.NET Core with Angular                         angular          [C#]              Web/MVC/SPA        
ASP.NET Core with React.js                        react            [C#]              Web/MVC/SPA        
ASP.NET Core with React.js and Redux              reactredux       [C#]              Web/MVC/SPA        
ASP.NET Core Web API                              webapi           [C#], F#          Web/WebAPI         
global.json file                                  globaljson                         Config             
Nuget Config                                      nugetconfig                        Config             
Web Config                                        webconfig                          Config             
Solution File                                     sln                                Solution           
Razor Page                                        page                               Web/ASP.NET        
MVC ViewImports                                   viewimports                        Web/ASP.NET        
MVC ViewStart                                     viewstart                          Web/ASP.NET        

当前最新版本是2.0,满足了我所有的需求。

我喜欢这个回答似乎与IDE无关,但我很好奇有哪些类型的程序可以轻松处理由这些命令生成的项目?例如,在MonoDevelop中我没有看到对Razor页面的支持。而且我还觉得VSCode的插件和编译器的模块化方法非常笨拙。 - fIwJlxSzApHEZIl
Rider看起来很有前途:https://www.jetbrains.com/rider/,但我还没有尝试过。与此同时,我又回到了Windows,因为在Linux上我错过了太多功能。我是一名C#开发者。而Visual Studio让开发变得更加轻松。在Linux上我曾经使用Sublime Text一段时间。 - tedi

你可以使用apt来安装Visual Studio Code。
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install code

enter image description here

或者“snap”:
sudo snap install code --classic

安装完 C# 包后,下一个对话框会出现:

enter image description here

点击标记的按钮打开下一页,该页面提供了.Net Core SDK安装的说明(以及ASP.Net Core运行时和.Net Core运行时安装说明):

wget https://packages.microsoft.com/config/ubuntu/19.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo apt install ./packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1

monodevelop IDE现在似乎不是一个选择,因为我找不到它。但是如果你想安装当前的mono版本(例如,在20.04上,amd64架构),你可以使用官方mono仓库

sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb [arch=amd64] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt install mono-devel

你还可以安装额外的mono软件包,你可以通过以下方式找到它们:
apt-cache search mono

这个“man mono”会向你介绍它的用法:
DESCRIPTION
       mono is a runtime implementation of the ECMA Common  Lan‐
       guage  Infrastructure.   This can be used to run ECMA and
       .NET applications.