C#知识在Linux系统中有用吗?


44

我知道C#,并且喜欢在系统之间切换和使用Linux。我可以使用C#来构建可在Linux上本地运行的应用程序吗?我应该怎么做才能在Linux系统中利用我的C#知识?

请注意,我专门研究Unity3D,但是我仍然想使用C#创建Linux应用程序。


1
KerbalSpaceProgram用Unity编写,可在Win / Mac / Linux上运行。KSP的插件/模块是用C#编写的,可以在Win,Mac或Linux上开发。我现在主要使用Mac而不是Linux来实现$ REASONS,但是我在C#而不是Windows平台上进行KSP mod开发。我很可能很快会在KSP之外用xUnit测试编写一些独立的C#代码,就像其他任何开发一样,但是我只需要在mono下运行它即可。MechJeb有一个在Mac + Linux上构建的示例Makefile: github.com/MuMech/MechJeb2/blob/master/Makefile(需要链接的KSP游戏dll)。
lamont

3
C#应用程序通常不会在任何地方本地运行。
停止Harming Monica

@OrangeDog我知道,即使在Windows上,您也需要安装.Net framework。如果我说“本地”,则表示没有任何仿真或兼容性层。我的基本意思是,无论您需要安装多少程序或软件包,Linux都支持。
雅各布

2
这与Ubuntu有什么关系?
underscore_d

2
@underscore_d我不知道你在哪里听到的,但这不是真的。请参阅“不仅是Ubuntu特有的”问题吗?关于Ask Ubuntu的许多很多问题同样适用于绝大多数GNU / Linux系统。也许有人会发现一个合理的理由来考虑这个问题,但事实并非如此。(顺便说一句,这确实有Ubuntu相关信息的答案。我自己的文章的第二段是关于Ubuntu软件包的;它继承了一些但不是全部其他发行版。)
Eliah Kagan

Answers:


55

您很可能会偶然发现http://www.mono-project.com/

正如关于单声道页面所说:

Mono是基于.NET Framework的开源开发平台,它使开发人员可以构建跨平台应用程序,从而提高开发人员的生产率。Mono的.NET实现基于C#的ECMA标准和公共语言基础结构

支持的平台包括Linux操作系统。


2
单声道...听起来很熟悉...哦,是的,这是基于统一的基础!我不知道我可以单独使用它。我认为它是Unity3d的一部分。
雅各布

41
Microsoft实现的最新版本(.Net Core)也支持Linux。
BlueRaja-Danny Pflughoeft

6
Mono不仅实现核心,还实现.net标准2.0(iirc)。
casey

13
几年前这将是一个不错的答案。现在已经过时了。
康拉德·鲁道夫'18

1
@KonradRudolph过时了吗?但是.NET核心基本上不需要任何生产级程序的NuGet依赖项吗?还是有其他选择
某人

72

是的,您可以在Ubuntu上开发软件,该软件本身将在C#中的Ubuntu上运行。两个单声道.NET核心支持的GNU / Linux系统,比如Ubuntu。(您也可以在其他发行版中使用它们,例如Debian,Raspbian,Fedora,CentOS,Arch,Gentoo等。)您可能知道,Unity3D游戏引擎还支持Ubuntu。Unity3D 嵌入Mono

许多Ubuntu软件包可以用Ubuntu的软件包管理器从官方社区支持的软件源安装,并使用C#编写,并使用Mono。其中包括音乐播放器Banshee,记笔记的应用程序Tomboy,光栅图形编辑器Pinta以及密码管理器KeePass(版本2起)。

大多数文本编辑器(例如Gedit,Vim和Emacs)都为C#突出显示语法。MonoDevelopVisual Studio Code是两个流行的集成开发环境,它们在Ubuntu上运行并支持C#开发。


10
也许还会提到Rider,它是C#的基于IntelliJ的思想的IDE,包含ReSharper for Visual Studio的所有功能。
威尔伯特'18

您可能需要调整此答案,以便暗示确实存在其他Linux发行版。由于它们还将提供或支持单声道,因此您可能需要保持中立和包容。
user2066657'4

@ user2066657感谢您的建议;我已编辑。我本来想弄清楚Mono和.NET Core如何不限于Ubuntu(“像Ubuntu这样的GNU / Linux系统”)。但是经过进一步的考虑,我意识到对于那些不知道我想告诉他们的读者来说,可能还不清楚。因此,我扩展了这一部分。我确实意识到此编辑可能无法使您满意:我已经使它更具包容性,但没有更加中立。该网站上的帖子强调Ubuntu是合理的。中间部分给出了带有下游Ubuntu软件包的C#程序的示例,故意将重点放在Ubuntu上。
伊莱亚·卡根

如果OP想要询问有关非Ubuntu操作系统的信息,那么他们可能会在Unix和Linux中询问。
李斯特先生,2018年

@MrLister是的,同意。但是我认为,通过我的澄清,已经有所收获,而没有损失。不过,我不打算重新调整整个职位。例如,我考虑过说些关于MonoDevelop和Visual Studio Code发行版的安装和使用相当容易的事情,但由于这样做有些复杂,最终决定改变音调和焦点(和长度!),因此决定不这样做。 )的帖子。
伊莱亚·卡根

20
  1. 您现在可以使用C#(。NET Core框架)在Linux上开发服务器应用程序,就像可以使用Java或Python一样。服务器应用程序我主要是指Web应用程序和Web服务(REST)应用程序。这与Linux容器(Docker / K8s)和云非常匹配。
  2. 您可以使用Mono框架(.NET实现)和GTK#(GtkSharp)工具包(GTK的包装器)使用C#开发桌面应用程序。有很多开发的项目。过去,该框架在Linux社区中受到了一定的抵制。一些发行版和用户不希望使用Mono应用程序。
  3. 您可以在Linux上使用C#使用Unity Engine开发游戏。Unity Editor在Linux上尚处于试验阶段。

所以,是的。在当今的Linux系统上,有关C#的知识可能非常有用。


4
您也可以在.NET Core中执行桌面应用程序。
PmanAce

2

您现在甚至可以使用.Net Core和一个名为Avalonia的新项目来制作基于XAML的前端跨平台(Linux,Mac,Windows,Android,iOS,UWP)应用程序。Avalonia是Beta版,但现在效果很好。它类似于WPF,但具有一些CSS样式增强功能。

我相信Avalonia目前在Linux上以Gtk为目标,但他们想转移到其他地方。这段视频中提到了它,但我个人不明白他说了什么:https : //www.youtube.com/watch?v=WESJUJWBLJ0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.