不装mono,你的.NET程序照样可以在Linux上运行!

让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序。

这种运行.net程序的办法有两个弱点,一个是需要客户机安装mono,二个是 ”mono xx.exe“ 这种命令行总让人感到有点不太专业的味道。

那么,有没有办法既不安装mono,又能让你的.NET程序就像c语言编译的程序那么,”直接“在Linux上运行呢?

为了解决.net程序特别是.net控制台程序在Linux平台上部署和运行的简便性问题,我给大家准备了一个小工具,叫”AnyExec“,下面 具体谈谈怎么将你的.net程序与 AnyExec整合起来,形成一个可以在Linux平台上无需安装mono就可以独立运行的程序系统。

一,准备:

1,由于目前只有64位的AnyExec,所以需要大家准备一台64位Linux测试机。

2,下载 anyexec。在Linux测试机上运行命令: wget http://linuxdot.net/down/anyexec-1.1-linux_x64.tar.gz

3,解压。运行解压命令:tar -zxvf anyexec-1.1-linux_x64.tar.gz

不装mono,你的.NET程序照样可以在Linux上运行!

然后进入 anyexec-1.1-linux_x64目录,用ls命令可以看到有一个叫 any的程序文件和分别名为 app、lib和bin的三个文件夹。

不装mono,你的.NET程序照样可以在Linux上运行!

你可以尝试运行一下 any,如果看到如下信息,说明 AnyExec能够在你的系统上正常工作。

不装mono,你的.NET程序照样可以在Linux上运行!

二,整合:

1,准备一个 .NET 控制台程序。如果没有,可以新建一个,比如,我用VS创一个叫ConsoleApplication3的控制台文件,.NET版本选4.0或4.5。

内容是:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, this is my.NET program running on Linux..");
            Console.WriteLine(sizeof(int));
            Console.WriteLine(System.Runtime.InteropServices.Marshal.SizeOf(IntPtr.Zero));      
        }
    }

然后编译出exe文件。

2,把exe文件上传到 anyexec-1.1-linux_x64 文件夹下边名叫“app”的子文件夹中。

不装mono,你的.NET程序照样可以在Linux上运行!

3,回到anyexec-1.1-linux_x64目录里面,把名字叫 ”any“的可执行文件复制一份,新文件名称与你上传到 app文件夹中的exe文件名一致(不含扩展名),如:ConsoleAppliction3

不装mono,你的.NET程序照样可以在Linux上运行!

4,试运行:

不装mono,你的.NET程序照样可以在Linux上运行!

转:http://www.cnblogs.com/yunei/p/5347590.html