使用Mono运行.NET 4应用程序

我正在尝试在Ubuntu机器上运行.NET exe(我安装了包mono-complete ),到目前为止没有运气。 该应用程序使用.NET 4(客户端配置文件)下的Visual C#Express 2010进行编译。

我尝试使用以下命令执行程序:

 mono application.exe 

但是,我收到以下错误:

警告:此应用程序支持的运行时版本不可用。 使用默认运行时:v1.1.4322

**(application.exe:5586):警告**:程序集中缺少方法System.Windows.Forms.Application :: SetCompatibleTextRenderingDefault(bool)/usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089 /System.Windows.Forms.dll,在程序集/media/disk/application.exe中引用

未处理的exception:System.MissingMethodException:找不到方法:’System.Windows.Forms.Application.SetCompatibleTextRenderingDefault’。

它假设使用的是.NET 4,而不是1,但我不知道如何设置它。 我试过了

 mono --runtime=4.0.30319.1 application.exe 

但这也不起作用。

任何帮助,将不胜感激。

听起来你遇到了这个bug:

我的Doc没有节点:Mono 2.8上的.net 4客户端配置文件

假设您安装了> Mono 2.8(这是第一个支持.NET 4.0的版本)。 如果没有,您应该安装一个更新的Mono包。

要记住的另一件事是Mono不支持整个WinForms。 除非您考虑使用Mono开发应用程序,否则您很可能会发现您使用的内容不受支持。

我怀疑exception是因为尚未实现System.Windows.Forms.Application.SetCompatibleTextRenderingDefault方法。 您是否通过Mono迁移分析器(MoMA)运行该工具,应该有助于了解您的应用程序是否与单声道兼容。 从那时起,您可以解决问题,甚至可能在代码中包含缺少的方法。

目前的单一完整包(甚至在Ubuntu Natty上)使用单声道2.6.7,它不支持.NET 4.0 API。 您必须构建最新版本的mono,这是获得使用4.0 API的最佳方式。 然而,计划在单声道3.0中“ 完全 ”支持.NET 4.0。

安装Monodevelop,然后右键单击linux中的C#.NET项目example.csprj,然后单击Monodevelop。