我正在尝试在Ubuntu机器上运行.NET exe(我安装了包mono-complete
),到目前为止没有运气。该应用程序使用Visual C#Express 2010在.NET 4(客户端配置文件)下编译。
我尝试使用以下命令执行程序:
mono application.exe
但是,我收到以下错误:
警告:支持运行时版本 由此应用程序不可用。 使用默认运行时:v1.1.4322
**(application.exe:5586):警告**:缺少方法 System.Windows.Forms.Application :: SetCompatibleTextRenderingDefault(布尔) 在集会中 /usr/lib/mono/gac/System.Windows.Forms/1.0.5000.0__b77a5c561934e089/System.Windows.Forms.dll, 在程序集中引用 /media/disk/application.exe
未处理的例外情况: System.MissingMethodException:方法 未找到: 'System.Windows.Forms.Application.SetCompatibleTextRenderingDefault'。
假设使用的是.NET 4,而不是1,但我不知道如何设置它。我试过了
mono --runtime=4.0.30319.1 application.exe
但这也不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:17)
听起来你遇到了这个错误:
My Doc's Got No Nodes: .net 4 Client Profile on Mono 2.8
假设您安装了> Mono 2.8(这是第一个支持.NET 4.0的版本)。如果没有,你应该安装一个更新的Mono包。
要记住的另一件事是Mono不支持整个WinForms。除非您考虑使用Mono开发应用程序,否则您很可能会发现您使用的内容不受支持。
答案 1 :(得分:3)
我怀疑异常是因为尚未实现System.Windows.Forms.Application.SetCompatibleTextRenderingDefault方法。您是否通过Mono Migration Analyzer (MoMA)运行该工具,应该有助于了解您的应用程序是否与mono兼容。从那时起,您可以解决问题,甚至可能在代码中包含缺少的方法。
答案 2 :(得分:1)
当前单声道完整包(甚至在Ubuntu Natty上)使用单声道2.6.7,它不支持.NET 4.0 API。您必须构建最新版本的mono,这是获得使用4.0 API的最佳方式。然而,“Complete”计划在单声道3.0中支持.NET 4.0。
答案 3 :(得分:0)
安装Monodevelop,然后右键单击linux中的C#.NET项目example.csprj,然后单击Monodevelop。