C#编写的winform程序使用mono脱离.net框架

远方潭 2010-05-20 12:52:23
在一台没有.net framework 2.0的机器上要装.net C#程序,由于不希望有.net 框架长时间的安装。于是使用mono使C#程序能在没有.net 环境的机器上也能够运行。从官网上下载了mono-2.6.4-gtksharp-2.12.10-win32-3.exe,安装之后从安装目录中获取了lib和bin两个文件夹,之后再和自己写好的了C#程序放到同一个目录中,打包一起传到一个没有.net环境的机子上去,使用命令符格式为:mono-2.6.4-gtksharp-2.12.10-win32-3.exe 我的程序名.exe 这样成功的运行起了 C# 程序。

但是,这时候问题出现了,由于我这个程序要连接access数据库,发现当我要连接access数据库时,程序会自动消失,不知道到为什么,网上查阅资料发现“* 使用数据库,如使用Oledb类,要保留gac目录中的System.Transactions。对Access数据库支持不够好,调用Open方法时就打不开程序了 。 ”

请教大家,有没有什么好的解决方法?
...全文
2465 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
上帝之左手 2011-07-27
  • 打赏
  • 举报
回复
正在用MONO 2.10。很差么?
我觉得还好呀!而且是免安装的!
flyerwing 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
那个框架
还是使用.net框架
[/Quote]
mono还是.NET FRAME WORK
xere_pui 2011-06-21
  • 打赏
  • 举报
回复
mono稳定性太差啦
Comeonzhou 2010-09-12
  • 打赏
  • 举报
回复
现在好像除了win7系统不用装.net其他都要装吧. 脱离框架是不可能的..你程序永远都只是在net框架下生活,就算借助外力,他也是在框架下生活.
yangquanlaohou 2010-09-12
  • 打赏
  • 举报
回复
安装个.NET框架也不费事,三两分吧。何必呢?
myrroom 2010-09-12
  • 打赏
  • 举报
回复
win没有必要下用mono,我还以为是Linux下呢
ganzhengzheng 2010-09-12
  • 打赏
  • 举报
回复
假若你是用vs编译的程序,直接用mono框架来运行,这肯定会有问题的,别说连接acess,哪怕是一些基本的winform界面也不能保证正常运行!
cnsvs 2010-09-12
  • 打赏
  • 举报
回复
用SQLITE数据库嘛,比ACCESS帅多了!

.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框架进行精简,这方面网上已有很多文章,我就不再罗嗦了。
qdk0901 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 danjiewu 的回复:]
mono不也是.net框架吗……
既然不想装.net那你还用.net干嘛
[/Quote]

在没装有.net framework的机器上部署你的程序看看。
gomoku 2010-05-20
  • 打赏
  • 举报
回复
脱离了.NET框架,却又依赖于Mono框架?
如果是Windows环境,还不如用.Net。
远方潭 2010-05-20
  • 打赏
  • 举报
回复
恩,还是使用安装.net framework 2.0框架吧
哎,还是从了Microsoft吧
weiki516 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zfq330721 的回复:]
引用 7 楼 shao5155285 的回复:

mono中的ADO.NET和framework 中的ADO.NET好像是不一样的
mono中的不是微软写的 微软人然开源了部分.NET源码 但没把ADO.NET开源
所以二者操作数据库应该是有差异的
你直接把Winform用mono发布应该是有问题
还是换成framework 吧

那在没有.net环境的机器上,使用vs 2005自……
[/Quote]
个人没有更好的解决方案 微软不开放ADO.NET源码 Novell再怎么努力开发也不可能和微软的完全一样
就算你数据库连上了 可能也会出现别的问题
实在想用只能转到在mono开发然后在mono发布 不过很少有人这么干吧

.NET2.0的框架安装速度不算是特别慢的 .NET3.0才慢 如果C/S程序 客户端不是很多的话 建议还是用framework
danjiewu 2010-05-20
  • 打赏
  • 举报
回复
mono不也是.net框架吗……
既然不想装.net那你还用.net干嘛
deknight 2010-05-20
  • 打赏
  • 举报
回复
如果在linux,可以用mono,在windows完全没有必要
ShaoWenJing 2010-05-20
  • 打赏
  • 举报
回复
2.0 的是可以脱框架的
compleat 2010-05-20
  • 打赏
  • 举报
回复
2.0还算好的,你要是搞个3.x的,客户会不会直接把你PASS掉?
做项目,还是要一致性比较好
远方潭 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 projectdd 的回复:]

不要这些旁门左到

安装体验不好,那么就用SL 这个是个解决方案
[/Quote]
SL 解决方案,这个是什么?
远方潭 2010-05-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 shao5155285 的回复:]

mono中的ADO.NET和framework 中的ADO.NET好像是不一样的
mono中的不是微软写的 微软人然开源了部分.NET源码 但没把ADO.NET开源
所以二者操作数据库应该是有差异的
你直接把Winform用mono发布应该是有问题
还是换成framework 吧
[/Quote]
那在没有.net环境的机器上,使用vs 2005自带的打包程序将.net框架的安装包集成到程序当中,有没有比这样更好的方法。因为这样自然会先有长时间的.net框架的安装,用户觉得很不爽!
ProjectDD 2010-05-20
  • 打赏
  • 举报
回复
不要这些旁门左到

安装体验不好,那么就用SL 这个是个解决方案
shatangju8801 2010-05-20
  • 打赏
  • 举报
回复
孤傲来 观光
加载更多回复(6)

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧