我从网上了解用MONO可以实现C#在LINUX上的跨平台,现在已经可以在LINUX上运行简单的C# 程序了或者是在windows下编译好简单C#程序到LINUX下运行,但是winform程序不能运行在LINUX下,运行后出错,是不是还需要安装其它的东西?
   有没有高手说下

解决方案 »

  1.   

    linux下面用到的图形库主要是QT和GTK,跟Win是不一样的啊。
    要想跨平台,也应该是Win32+Gtk能移植到Linux。 VS平台的估计没戏。
      

  2.   

    那怎么在Linux上部署GTK?  网上说MONO自带GTK,我试了下以下程序
     mono-Gtk中的容器类收藏
    新一篇: Mono入门指导 | 旧一篇: 如何获取数据库架构
    Mono提倡使用Gtk来制作跨平台的UI,Gtk编程有点像java,都有自己的容器类,如果想摆出合适的界面就必须正确的使用Gtk中的容器类,常用的有如下如 Gtk.Box
    就有 Vboxusing System;
    using Gtk;class VBoxTester {
         static void Main ()
         {
              Application.Init ();
              Window myWindow = new Window ("VBox Widget");
              VBox myBox = new VBox (false, 4);          //Add the box to a Window container
              myWindow.Add (myBox);
              AddButton (myBox);
              AddButton (myBox);
              AddButton (myBox);
              myWindow.ShowAll ();
              Application.Run ();
         }     static void AddButton (VBox box)
         {
              box.PackStart (new Button ("Button"), true, false, 0);
         }     
    }
    编译以上的代码的时候 因为用了Gtk所以要显示引用Gtk库
    mcs –pkg:gtk-sharp Demo.cs
    还是出错,是不是编译命令出错了?
      

  3.   

    http://www.mono-project.com/Guide:_Porting_Winforms_Applications
    好像官方网站上有介绍,有一些工具可以移植。
      

  4.   

    哦, 那我看下
    mcs –pkg:gtk-sharp Demo.cs 
    在运行上面命令的时候 ,提示是找不到个gtk-sharp ,我下载了一个并且安装,提示我说要装MONO 或者.net,但是MONO我已经安装好了,并且能运行简单的C#程序了啊,怎么说还要安装? 
      

  5.   

    如果你只是一个WinForms的程序,请使用Moma来做检查,确保所有的dll和exe都通过。这样拷贝你的exe和dll到安装了Mono的Linux机器上面,通过命令行方式执行 mono a.exe就可以看到执行效果了。http://mono-project.com/MomaMono 2.0发布之后,应该绝大部分通过Moma检查的.NET 2.0的WinForms都可以执行在Linux上面。
      

  6.   

      我在windows环境下用VS建立了一个 winform的程序,拿到linux机器上试了下,提示找不到system.windows.forms等一些程序集,是不是要替换成GTK?
      

  7.   

    因为你安装的Mono版本太低,所以才会报这个错。Mono 2.0才会带有完整的System.Windows.Forms.dll实现,由于完全基于X11 API,所以可以直接在Linux上面运行,不需要GTK。如果你用GTK#重新做界面,那又浪费了一大堆时间。另外,你究竟有没有用Moma做过检查,没通过Mona的检查,你就不用浪费时间了,那肯定是不能运行在Linux上面的。
      

  8.   

    恩 是啊,我看了GTK,界面都要从新作,但是我下的版本是最新的啊Latest Version: 1.9.1 (Mono 2.0 Beta) (Release Notes)
    我下的右上角的 Mono 1.9.1 Sources ! 而且照着你的说法,winform 程序通过了Moma的检查, 结果是4个绿色的对勾! 但是在linux下执行我的a.exe文件 mono a.exe 提示信息说有问题找不到 System.Windows.Forms 后面一大堆