单声道模拟.NET,还是只是一个与.NET语言兼容的框架?

时间:2010-04-20 23:05:31

标签: c# .net mono

就像,如果我使用C#和.NET框架在Windows上编写程序,然后将代码放在运行mono的Linux机器上,它会运行完全相同吗?或者我是否必须重写它以使用Mono的库?

3 个答案:

答案 0 :(得分:5)

  

它会运行完全一样吗?或者我是否必须重写它以使用Mono的库?

这实际上取决于你的程序是做什么的,以及它是如何编写的。

如果您使用Mono支持的纯C#和核心.NET框架功能,它们将“正常工作”,不做任何更改。但是,如果您使用不受支持的功能(即:围绕本机互操作或WPF等构建的任何第三方库),它们将无法工作。

在开发程序集时,定期运行Mono Migration Analyzer是一个非常好的主意。这将告诉您任何不兼容性。

答案 1 :(得分:4)

简短回答:这取决于。

更长的答案:Mono'c C#编译器生成的IL与.NET生成的IL相同。

问题在于附加功能;即在.NET中使用没有Mono库的东西(例如WPF)。

另一个不兼容的领域是使用Win32特定的API。

所以,有点是最好的答案。

答案 2 :(得分:2)

这是C#的跨平台实现,实现与.NET兼容。

所以,我会说这是你列出的两个选项的前者。

http://www.mono-project.com/Main_Page