用Mono构造最精简的.net运行环境

本文的目的是使用mono构造一个最小的.net运行环境。

构造一个最小.net环境的好处何在?

第一,可以在没有.net运行库的机器上发布.net程序。

第二,研究最小.net环境,可以将.net用于一些嵌入式操作系统。提高开发效率。

尝试的过程,就不描述了。直接发布结果。

1.最基本的文件依赖

bin\mono.exe

bin\mono-20.dll

lib\mono\2.0\mscorlib.dll

这三个文件是最基本的。只要有这三个文件,就可以运行控制台下的helloWorld。

可以访问基本的IO。

2.网络程序的依赖

lib\mono\gac\System\2.0.0.0__b77a5c561934e089\System.dll

lib\mono\gac\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll

lib\mono\gac\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll

有这三个文件再加上基本的依赖(共6个文件),就可以使用TcpClient和Socket类。

3.Winform程序的基本依赖

lib\mono\gac\System\2.0.0.0__b77a5c561934e089\System.dll

lib\mono\gac\Mono.Posix\2.0.0.0__0738eb9f132ed756\Mono.Posix.dll

lib\mono\gac\Accessibility\2.0.0.0__b03f5f7f11d50a3a\Accessibility.dll

lib\mono\gac\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll

lib\mono\gac\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll

有这五个文件,加上基本的的三个文件,就可以运行基本的Winform程序

如果使用了其他的类,少什么文件就加什么文件就行了。

只要找到上面的文件列表中的文件,在保持原有的目录结构的前提下,把发布的目录拷贝,然后在bin目录下执行mono appname.exe就可以运行程序了。

类似2.0.0.0__b77a5c561934e089这样的目录,实际上是这个dll的版本号。这个与mono的版本有关。在不同的版本中不一样。但是前面的目录是一样的。比如System的目录下,一定有System.dll文件,可能不止一个,我们只需要2.0.0.0开头的目录下的文件。

Linux:

1.基本

usr/bin/mono.exe

usr/lib/mono/2.0/mscorlib.dll

这两个文件就可以搞定helloworld.

2.网络(与windows上相同)

usr/lib/mono/gac/System/2.0.0.0__b77a5c561934e089/System.dll

usr/lib/mono/gac/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

usr/lib/mono/gac/System.Xml\2.0.0.0__b77a5c561934e089/System.Xml.dll

3.winform(尚未成功,有一个文件还没有搞定)

posted @ 2012-12-12 16:08  郑文亮  阅读(1501)  评论(0编辑  收藏  举报