我需要开发C#应用程序,但是我使用Linux(ubuntu),我找到了MonoDevelop,但我不明白我是否可以从Linux编写.NET应用程序以在Windows上使用,因此Linux上的开发和执行在Windows上。它们兼容吗?
在Mono网站上我发现:
Mono是一个软件平台,旨在让开发人员轻松实现 创建跨平台应用程序。
这意味着什么?我可以在可以在.NET框架安装的任何地方运行的Linux c#应用程序上编写吗?
感谢您的澄清
答案 0 :(得分:6)
您从MonoDevelop或其他任何地方编译的任何C#代码都可以在任何具有Mono或.NET Framework的平台上运行。只要linux系统安装了Mono,它就可以运行任何已编译的C#应用程序,包括从Windows机器上复制的.exe文件。
这样做的原因是,当您编译C#应用程序时,它不会被编译为本机系统代码,而是被编译为CIL。当您运行该程序时,它会自动JIT编译您正在运行的系统的代码,保留原始可执行文件。 Windows上的.NET Framework和其他所有内容上的Mono都可以读取和编译CIL字节码。
要记住一件事,Mono没有可用的整个.NET Framework堆栈。几乎所有的BCL都是完整的,但像Mono这样的库不能用于WPF。 Mono建议您使用GTK#作为GUI。
答案 1 :(得分:4)
是的,您可以使用mono创建可在Linux,Windows和Mac上运行的.NET应用程序。
它是Microsoft的.Net Framework的开源实现,基于ECMA的C#标准和公共语言运行时。
这意味着只要您不编写特定于平台的代码,就可以在.NET可以运行的所有平台上运行它。 (因此,不是使用\
或/
连接路径,而是使用Path.Combine
,而不是将换行符硬编码为\n
,而是使用Environment.NewLine
等。< / p>
答案 2 :(得分:2)
另一个优点是单声道开发工具是免费的。 (见:http://www.mono-project.com/Main_Page)
答案 3 :(得分:0)
您确实可以在Linux上write .NET code in Mono并在Windows,Mac OS X和Linux上运行该应用程序 但请记住,完整的.NET堆栈不适合您。最值得注意的是complete lack of WPF support。
答案 4 :(得分:0)
只要您小心谨慎,不要对文件系统布局等内容采取任何措施,并使用可移植的库。特别是图形界面存在问题:Windows.Forms在Linux上看起来很陌生,而且Gtk在Windows上可能会有点不合适。