C# mono是模仿.NET,还是只是一个与.NET语言兼容的框架?

C# mono是模仿.NET,还是只是一个与.NET语言兼容的框架?,c#,.net,mono,C#,.net,Mono,比如,如果我在windows上使用C#和.NET框架编写一个程序,然后将代码放到运行mono的Linux机器上,它会运行完全相同的程序吗?或者我必须重写它才能使用Mono的库吗?这是一个跨平台的C#实现,并且该实现与.NET兼容 所以,我认为这是你列出的两个选项中的前一个 简短回答:视情况而定 更详细的回答:Mono'c c#编译器生成的IL与.NET生成的IL相同 问题在于临时演员;i、 e.使用.NET中没有Mono库可用的东西(例如WPF) 另一个不兼容的领域是使用Win32特定API的地

比如,如果我在windows上使用C#和.NET框架编写一个程序,然后将代码放到运行mono的Linux机器上,它会运行完全相同的程序吗?或者我必须重写它才能使用Mono的库吗?

这是一个跨平台的C#实现,并且该实现与.NET兼容

所以,我认为这是你列出的两个选项中的前一个


简短回答:视情况而定

更详细的回答:Mono'c c#编译器生成的IL与.NET生成的IL相同

问题在于临时演员;i、 e.使用.NET中没有Mono库可用的东西(例如WPF)

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

所以,这是最好的答案

它会完全一样吗?或者我必须重写它才能使用Mono的库

这实际上取决于程序的功能和编写方式

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


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

一个关键注意事项是直接在Mono/Linux上测试应用程序。我有一个应用程序无法通过MoMA,但实际上它可以在Mono/Linux上正常运行。我稍后会尝试报告这种错误警报。:)此外,.NET应用程序在openSUSE Linux主题下的Mono上看起来有很大的不同:)@Lex:True(关于外观),但是.NET应用程序在XP上与主题W7框上的外观也有很大的不同;)