跨平台的.Net框架究竟是如何实现的?

Iva*_*van 9 c# mono cross-platform winforms

在Mac或Linux机器上运行WinForms应用程序通常要做什么?

一个.只需复制并运行(假设他们已安装了Framework).
湾 重建.
C.化妆品源代码修改.
d.重型源代码修改和表单重新设计.

假设应用程序是通过Visual C#Express或Visual Studio 2008开发为100%托管的C#3代码,目标是.Net Framework 3.5,不使用任何第三方组件/库而开发,无需封装非托管代码或任何低级别攻击 - 仅使用标准的Microsoft文档.Net Framework C#API).或者相同的条件,但C#4语言,.Net Framework 4和Visual Studio 2010.

在使用MS .Net Framework和Visual Studio时,是否存在开发Mono-ready应用程序的实用指南?任何指南,提示,特定方面都会突出显示,通知开发人员在编写易于移植的应用程序时需要牢记的内容,而无需在Visual Studio中编写代码时在Mono引用中查找每个函数.

and*_*axo 12

您的应用程序可能只是零修改运行,但我还没有看到在现实世界中发生这种情况.

现代艺术博物馆可以为您提供很多帮助.MoMA是由制作Mono的人制作的,并且会告诉您是否使用了尚未移植的任何功能.

一般来说,.NET 3.5和Winforms大多数都可以.与版本4的兼容性仍在进行中.

如果您在Windows上进行开发,更新的工具是Microsoft 的.NET可移植性分析器.这可以通过Visual Studio使用.

  • @Ivan是的,.NET可执行文件不是普通的Windows二进制文件,它是一个包含在虚拟机(CLR)中运行的代码的文件,非常类似于Java. (10认同)
  • 现代艺术博物馆不是一颗银弹.您仍需要在目标操作系统上测试您的应用程序.我向Mono发送了几个关于我的应用程序通过MoMA的错误报告,但在目标操作系统上失败了.实现了许多API,但它们可能与.NET行为不匹配,或者它们会向您抛出异常. (2认同)

Ree*_*sey 5

如果它是一个Windows窗体应用程序,使用标准的Windows窗体控件,而没有第三方组件,您通常可以直接在Mono上运行它,只需复制并运行即可.

Mono非常支持Windows Forms和C#3功能.

但是,如果您使用任何本机组件,Mono或WPF支持的数据访问,您将遇到问题.C#4/.NET 4也很可能在这一点上不起作用.