我了解 C#,并且喜欢在系统之间切换并使用 Linux。我可以使用 C# 构建可在 Linux 上原生运行的应用程序吗?我应该如何在 Linux 系统中利用我的 C# 知识?
请注意,我专攻 Unity3D,但我仍然想使用 C# 创建 Linux 应用程序。
答案1
是的,你可以使用 C# 在 Ubuntu 上开发软件,该软件本身可以在 Ubuntu 上运行。单核细胞增多症和.NET 核心支持GNU/LinuxUbuntu 等系统。(您可以在其他发行版,如 Debian、Raspbian、Fedora、CentOS、Arch、Gentoo 等。)Unity3D 游戏引擎也支持 Ubuntu,你可能知道。Unity3D嵌入 Mono。
Ubuntu 的许多软件包都是用 C# 编写并使用 Mono,这些软件包可通过 Ubuntu 的软件包管理器从官方社区支持的软件源安装。其中包括音乐播放器女妖,笔记应用假小子,光栅图形编辑器平塔以及密码管理器KeePass(自版本 2 起)。
大多数文本编辑器(例如 Gedit、Vim 和 Emacs)都具有 C# 语法高亮功能。MonoDevelop和Visual Studio 代码是两个流行的集成开发环境,运行在 Ubuntu 上并支持 C# 开发。
答案2
你很可能会偶然发现http://www.mono-project.com/
作为关于 Mono页面显示:
Mono 是基于 .NET Framework 的开源开发平台,它允许开发人员构建跨平台应用程序,从而提高开发人员的工作效率。Mono 的 .NET 实现基于 ECMA 标准C#和通用语言基础设施。
这支持的平台包括Linux。
答案3
- 现在可以使用 C# 在 Linux 上开发服务器应用程序(.NET 核心框架),就像您可以使用 Java 或 Python 一样。我所说的服务器应用程序主要是指 Web 应用程序和 Web 服务 (REST) 应用程序。这与 Linux 容器 (Docker/K8s)和云。
- 您可以使用 Mono Framework(.NET 实现)和 GTK# (GtkSharp) 工具包(GTK 的包装器)用 C# 开发桌面应用程序。有许多项目基于此开发。过去,该框架曾受到 Linux 社区部分成员的抵制。一些发行版和用户不想要 Mono 应用程序。
- 您可以在 Linux 上使用 C# 通过 Unity Engine 开发游戏。Unity Editor 在 Linux 上仍处于试验阶段。
是的。C# 知识在当今的 Linux 系统上非常有用。
答案4
Linux 以 C 编程语言提供其原生 API。原生 Linux 程序使用这些 API 来访问文件、I/O 设备、套接字(网络)、进程间通信、线程等。要创建原生 Linux 应用程序,您需要用 C 编写应用程序,然后使用(最有可能的)GCC 对其进行编译,最终得到可执行文件。您甚至可以更进一步,在程序中使用 GUI 库来添加 GUI(GTK 和 Qt 是两种流行的 GUI 库)或使用打包系统来打包应用程序(如 .deb 和 .rpm 文件)。
C#、F# 和 VB 带有自己的编译器(通常会生成 IL 代码而不是机器代码),并且它们不直接使用 Windows 或 Linux 本机 API(均使用 C 语言),而是使用自己的包装器。这意味着编译后的代码和操作系统之间需要有另一个额外的层。这个额外的层必须读取 IL 代码并将其转换为本机 Windows 或 Linux 或 macOS API。这个额外的层可以是 .NET Framework、Mono 或 .NET Core(目前只有 .NET)。
现在回答“C# 是否可用于 Linux 系统编程?”这个问题,大多数情况下是的。
.NET 具有用于文件处理、网络、线程和一些 I/O 设备的库。现在例如,假设您需要在应用程序中访问蓝牙。.NET 没有任何用于蓝牙的 API,因此在这种情况下您有两个选择:
- 查找 C 中的本机 API 并在 C# 中调用它
- 在 NuGet 中搜索,看看是否有人已经完成
其他示例包括 WiFi Direct、游戏手柄、CPU 温度、电池信息、相机、GPS、笔记本电脑传感器等。因此,对于低级应用,您只能靠自己(即使在 Windows 上也是如此,除非您使用 UWP)。对于 Linux 上的此类应用,C 或 Python 将是更好的选择。
如果您想在应用程序中添加 GUI,.NET 有 GUI 库,但仅适用于 Windows。另一方面,Mono 有 GTK 绑定,称为 GTK#,但自然 GTK# 总是落后于 GTK 开发(除非您想要最新的功能,否则这不是问题)。
.NET 6 为跨平台 GUI 提供了另一种解决方案。在 .NET 6 中,您可以使用 C#、HTML 和 CSS 创建 Blazor 应用程序,并使用 Electron 从中创建桌面应用程序(截至撰写本文时,它尚未准备好)。
总结:
Linux 上使用 C# 的优点
- 你会利用你现有的技能
- 如果你坚持使用 .NET 库,你的应用程序将可以移植到 Windows 和 Mac
- 你正在使用的是一种现代的干净语言,而不是一种有 50 年历史的语言(铁杆 C 程序员可能会不同意:D)
Linux 上 C# 的缺点
- 许多本机 API 不可用
- 从理论上讲,原生 C 代码比依赖框架的 C# 代码要快。虽然可以直接为 Linux 编译,但这样会降低可移植性,而且在当今的硬件条件下,用户无论如何也不会感觉到差异。
- 您对 GUI 应用程序的需求更大