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