在Linux上为.NET应用程序使用MonoDevelop

5
我需要开发C#应用程序,但我使用Linux(Ubuntu),我找到了MonoDevelop,但我不知道是否可以从Linux编写.NET应用程序以在Windows上使用,也就是在Linux上开发,在Windows上执行。它们兼容吗?
在Mono网站上,我找到了以下内容:
“Mono是一个软件平台,旨在使开发人员轻松创建跨平台应用程序。”
这是什么意思?我能否在Linux上编写C#应用程序,然后在安装了.NET框架的任何地方运行它们?
谢谢您的澄清。
5个回答

7
任何从MonoDevelop或其他地方编译的C#代码都可以在安装了Mono或.NET Framework的任何平台上运行。只要Linux系统已经安装了Mono,它就可以运行任何已编译的C#应用程序,包括从Windows机器复制的.exe文件。
原因在于,当您编译C#应用程序时,它不是被编译为本地系统代码,而是被编译为CIL。当您运行程序时,它会自动将您的代码JIT编译为正在运行的系统,保留原始可执行文件不变。Windows上的.NET Framework和其他所有系统上的Mono都可以读取和编译CIL字节码。
还有一件事需要记住,Mono没有完整的.NET Framework堆栈可用。几乎所有的BCL都完好无损,但像WPF这样的库在Mono上不可用。Mono建议您使用GTK#来创建GUI。

5

是的,您可以使用Mono创建在Linux、Windows和Mac上运行的.NET应用程序。

Mono是:

它是基于C#和公共语言运行时的ECMA标准的Microsoft .Net Framework的开源实现。

这意味着只要您不编写特定于平台的代码,就可以在所有.NET可运行的平台上运行它。 (因此,您使用Path.Combine来连接路径而不是使用\/,并使用Environment.NewLine等而不是硬编码换行符作为\n)。


2

0

你确实可以在Linux上编写.NET代码,并在Windows、Mac OS X和Linux上运行应用程序。
但请记住,完整的.NET堆栈对你不可用。最明显的是完全缺乏WPF支持


0

只要小心不假設文件系統佈局等事情,並使用同樣可攜的庫,就可以實現。 特別是圖形界面可能存在問題:Windows.Forms 在 Linux 上看起來很陌生,而 Gtk 在 Windows 上可能會感覺有些不協調。


嗯,如果我使用Gtk并创建.exe文件,那么在移植到Windows时会有问题吗? - Dail
Gtk#已经被移植到Windows,因此您不会遇到太多问题,但在某些情况下,这些组件的行为并不像本地Windows组件一样100%。这是否是一个问题取决于用户界面的复杂性和您的用户的期望。 - Joni
是的,你可以这样说。 - Joni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接