Mono跨平台正在发展吗?

用单一的跨平台开发什么? 我如何编译Windows(在Linux中),如何在Linux中运行(因为没有.NET JIT编译器)?

那么用Mono开发的特点是什么? 用Visual Studio进行开发有什么优势(除了跨平台的东西)?

Solutions Collecting From Web of "Mono跨平台正在发展吗?"

Mono开发绝对是一个跨平台的解决方案:

  • 努力避开Windows特定的API
  • 没有与本机Windows API的互操作性…或者…您可以#ifdef出Windows API并提供您自己的Mono包装程序,以尽量减少代码更改,例如,有一个使用Interop来调用Win32方法的DLL包装程序例如'GetFont',这是一个假设的例子,GetFont将返回不存在的字体信息,但是你可以创建一个假的包装器,它不返回任何东西,并且在编译时使用#ifdef宏来使用包装器单声道,并在Windows下编译时关闭宏,你如何实现包装取决于你。
  • 不要使用Mono中可能不存在的高级GUI属性。
  • 使用NewLine之类的环境属性使它独立于Unix的CR和Win32的CRLF,同样适用于Unix的“/”和Win32的“\”路径分隔符。
  • 序列化在Mono下略有不同,你在Mono上序列化一个对象,不要自欺欺人地认为它将在Win32下反序列化,反之亦然。

最后但并非最不重要的一点,从Mono到Win32,再回来检查一遍,继续测试和测试它。

大多数单声道运行时间与CLR兼容,因为它们遵循相同的标准。

这意味着一旦你编译你的代码(在Mono Visual Studio中),只要你确保只使用两者都支持的功能(例如没有单声道WMI的东西),并使用最佳实践编写你的应用程序, (例如使用Path.Combine来构建文件和目录路径,使用Environment.NewLine输出新行等等),你的应用程序可以在任何有Mono或CLR的平台上运行(包括Windows,Linux和Mac) 。

你可以用visual studio开发单声道,所以你的问题的一部分是没有意义的。

Mono本身就是跨平台的。

通过专门开发单声道,您将能够在任何具有单声道可用的平台上运行您的可执行文件。 这本身就是mono在MSFT的.Net平台上开发的最大优势。 换句话说: 如果你用单声道构建你的程序集,那么你就可以保证跨平台的支持,而使用.Net构建的程序可能不会给你这样的支持。

Mono已经对.Net中的缺陷进行了一些升级(例如,Mono.security提供了.Net 2.0中没有的功能,尽管我相信MSFT会在之后的版本中提供这些功能)。

可以使用Visual Studio构建.Net程序集,然后让Mono运行它,但是程序集必须小心使用Mono支持的框架/库,并且可以使用由程序集引用的任何非托管程序集选择OS。 换句话说:如果你的程序集在Windows上使用C ++ DLL,你必须确保你有适合于Linux的.a / .so文件。

要在Linux中运行.net程序集(假设mono安装正确),请键入: mono myprogram.exe

在Mono上开发的唯一优势是您可以使用Mac OS X或Linux环境。 但是,如果你有选择,永远不要离开Visual Studio。 就我所知, Visual Studio是C#和VB中可用于开发的最佳IDE。