让.NET Windows Forms程序脱离官方.NET框架运行之最简Mono方案(3mb)
Posted on | 一月 29, 2010 | No Comments
本文源代码下载地址:
http://flashview.ddvip.com/2009_03/helloworld_nondotnet.rar
Mono在不断成长, 现在最新的版本2.2 几乎是可以完整支持WinForms2.0的API了, 最近在园子里无意中翻到了以前一些关于C#程序脱离.NET框架运行的文章, 想老话重提, 看看是否从Mono入手会成为这个话题今后的主流思想.
通过不断的测试, 精简, 我从Mono框架中分离了可以运行一个基本的WinForms2.0程序所需要的最少的文件. 下面是步骤:
1. 在http://mono-project.com/ 下载Mono环境并安装好.
2. 建立工程目录 ”helloworld_nondotnet”, ”helloworld_nondotnetbin”, ”helloworld_nondotnetlib”.
3. 复制Mono安装目录bin 下面的 ”libgio-2.0-0.dll”, ”libglib-2.0-0.dll”, ”libgthread-2.0-0.dll”, ”mono.dll”, ”mono.exe” 至helloworld_nondotnetbin .
复制Mono安装目录libmono 下面的 ”2.0″目录至helloworld_nondotnetlibmono
复制Mono安装目录libmonogac 下面的 ”Accessibility”, ”Mono.Posix”, ”System”, ”System.Drawing”, ”System.Windows.Forms”目录至helloworld_nondotnetlibmonogac
(注意:上面几个全局程序集缓存目录中均包含1.0和2.0两个版本, 我们的目的是运行2.0程序, 因此将里面的1.0目录删掉以节省空间)
4. 打开VS编写一个示例程序helloworld.exe, 并将此exe放入 helloworld_nondotnetbin ,命令行运行 helloworld_nondotnetbinmono.exe ”helloworld.exe”, 如果你的helloworld.exe只用到了WinForms库和一些GUI Events的话, Mono环境是可以正常加载运行helloworld.exe的.
(如果.NET 程序当中调用到一些Windows特定API,例如注册表等, Mono会提示”requested feature is not implemented”, 并且程序中那一部分的功能不能正常运行, 即使使用完整版Mono调用也是如此, 暂时没找到解决办法 :( ………)
现在你可以将工程目录打包发布了, 使用7z压缩后仅3m大小, 如果你的程序无法运行,请先尝试使用完整版Mono调用,如果成功的话, 就逐一尝试将bin和lib目录下面的一些文件Copy到你的工程目录, 应该就没什么问题了.
相关文章:
评论|Comments
留言|Leave a Reply
![如果您自认为是一位忠实的Silverlight-Fans,那么请将此标志放到您的博客中成为一名真正的[银光使者]](http://images.cnblogs.com/cnblogs_com/alamiye010/Silverlighter1.jpg)