最新评论
.NET程序脱离框架进阶 之 Embedding Mono 使用MONO让.NET程序脱离.NET Framework运行是个不错的方法,网上已有很多介绍。但是MONO运行.NET程序也有让人郁闷的地方,比如你只能使用“mono 你的NET程序名.exe”这样的命令运行你的.NET程序(当然,你也可以用C++写个程序来调用。),虽然也不复杂,但是程序运行时MONO黑乎乎的命令行窗口实在碍眼。
前些日子看了下MONO官方Embedding Mono介绍,于是动手写了个,用起来爽多了,看下面C++代码:
#include "stdafx.h"
#include <glib/glib.h>
#include <mono/jit/jit.h>
#include <mono/metadata/assembly.h>
#include <mono/metadata/environment.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc, char* argv[])
{
int retval;
char *file;
file = ".\\demo.exe"; // .NET程序路径
//argv[0] = file;
mono_set_dirs(".\\lib", NULL);
MonoDomain *domain;
MonoAssembly *assembly;
domain = mono_jit_init (file);
assembly = mono_domain_assembly_open (domain, file);
if (!assembly) exit (2);
mono_jit_exec (domain, assembly, argc, argv);
retval = mono_environment_exitcode_get ();
mono_jit_cleanup (domain);
return retval;
}
哎,不会写文章,直接上源码下载地址:http://www.xun6.com/file/0dcf46622/EmbeddingMono.zip.html
压缩包中包含精简过的MONO框架(在Release目录中)仅包含demo所需的组件,所以不适合你的程序,你可以自行下载MONO框架进行精简,这方面网上已有很多文章,我就不再罗嗦了。
Re:继承IDbConnection连接不同数据库 yizhenfeng 2010-05-29 15:44
继承IDbConnection连接不同数据库,有没有调用存储过程和事物的例子,谢谢!发给我.
邮箱:yizhenfeng911@163.com
Re:继承IDbConnection连接不同数据库 yizhenfeng 2010-05-24 09:16
继承IDbConnection连接不同数据库,有没有调用存储过程和事物的例子,谢谢!发给我.
Re:C#中将dll汇入exe,并加壳 ybgenius 2009-07-12 22:20
Sixxpack的网页打不开
re: 我的第一个Struts程序 孙攀 2009-06-14 09:14
看见你写的挺好的。
多级子目录,重命名、删除、查询、设置图标等等要考虑的东西都太多了,比较麻烦,数据库里也得增加一张文章分类表,并且为了管理这些分类,软件需要增加“文章分类管理”这个模块,EasyNote的初衷是“简洁、易用”,并不想做得太复杂。我觉得对于大多数人,两级菜单应该够用了,在文章分类时,应提前规划好。
我没有心思维护这个软件了,平日里自己记一些笔记已经够用,源码已经发上去了,有需求的人请自行修改。
re: C#写的作者自用的记事本(文章保存在数据库中) tony_liyf 2009-04-06 07:15
挺好的,但有一点不足,菜单不支持多层次类型结构。能否改一下
LZ真是大好人啊,,偶正准备自己写个这个东东,发现已经有了,,谢谢
支持一下,其实能用自己的知识做些这样的实用工具,感觉是非常好的,做到了真正的学以致用,呵呵,希望能看到更多好的作品
.net 开发的软件的发布真是一个大问题, 2.0 还好只有20多M, 3.0需要50多M,
3.5基本上网络分发不太可行了. Client Profile也用过, 只能减少客户端的安装内容,不能减少下载内容.
mono倒是个好思路, 据说mono有个AOT编译选项,可以编译为原生代码, 不知道能否在windows下使用.
谢谢博主,很幸运能搜到你的网站。这个问题也是最近时间一直让我苦恼的问题。有了博主的真传,相信明天问题会迎刃而解。
re: C#中将dll汇入exe,并加壳 kkun 2008-12-20 16:49
用Sixxpack2.4压缩后,添加不了引用!提示
请确保此文件可访问并且是一个有效的程序集或COM组件!
re: 在模糊查询中使用ESCAPE 骆明亮 2008-10-13 00:18
遇到过,
re: C#中将dll汇入exe,并加壳 大白 2008-10-03 11:06
众里寻他千百度啊。。。
兄弟,收藏了。。。
一直要找的。。可看到的都是混淆,腿都软了。。
改天试一试你的方法。。
非常感谢。
至少我这个例子不缺少文件了,如果增加新的东西,请到mono安装目录lib\mono\gac里面找一下,有很多System开头的。简单的项目能应付,要是非常复杂,就说不来了,呵呵!
微软Visaul Studio 2008 SP1 发布后,出了一个叫做Client Profile的东西,是.Net Framework的精简子集,客户端据说安装后大小为27MB,没装2008,不知道咋用。