转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证
但是.net版本众多。而且.NET Framework框架很大。拖着一个大大的.net Framework总是让人很郁闷。
在网上找呀找呀。找到另一个.NET Framework 替代方案。Mono。
Mono2.10.2版本支持.net 2.0至4.0版本。
算了,既然安装了。找找资料吧。
Mono运行C#程序所要的库资源其实不多。
WinForm程序只要这5个库就行了。
每个库文件下,又有自己的.net版本号。如果用的是.net 2.0那么4.0.0.0那个目录就可以删除,如果你想问为什么没有3.0、3.5的库。答案是3.0和3.5用的是2.0的库。而1.0的库由于年代久远,Mono2已经不支持了。如果需要的话,可以下载Mono早期的版本。
另外我发现库文件下,有同名的.mdb文件。
那个.mdb文件删除掉对程序没什么影响。所以通通删除掉。
经过层层删除,最后剩下的那几个文件,加起来也就8M多点。而程序一点问题也没有。完美运行!
发行软件的时候用RAR压缩一下,程序只有3M多。很完美了!
可是我怎么知道。。我的程序具体要用到哪些库呢?
答案是:不知道。去记程序要用到哪些库太累了。我才不会去记呢。我有一个偷懒的办法。新建一个文件夹,先将不变的文件放好。bin目录下的mono.exe,mono-2.0.dll,lib\mono\.net版本号\mscorlib.dll。最后将Mono下lib\mono\gac中所有的库文件拷贝过来。运行编译好的C#程序。现在可以开始疯狂的删除了,碰到不能删除的文件,剩下的就是我们的程序要用的库了。此方法简单高效,百试不爽。
但是接下来还有个问题,Mono那个讨厌的命令行。还有如果人家电脑上装了.net库呢?用MS自家的.net不是更好么?于是我参考Mono官网,用C和windows api写了一个.net的引导程序。可以根据用设定来选择.net版本,如果客户电脑已经安装用户指定版本,则优先使用MS的.net,如果不存在则用Mono引导程序。
这个引导程序使用config.ini做为配置文件。
C#_Version=2.0 //.net版本号,共有4个值:2.0、3.5、4.0C、4.0F
C#_AppName=MyBooks.exe //预启动的应用程序名称
这个引导程序,在32位XP下使用VS 2008编译。因为是用windows api编写,没有额外的库。所以理论上32位的系统应当都能使用,64位的没试过。这个引导程序测试.net 2.0项目和.net 4.0项目都没问题。这个程序直接调用了mono-2.0.dll。所以Mono.exe也就没用了。下面给出我的测试项目,直接运行monologin.exe即可。效果我还是很满意的。同时欢迎交流!
附件下载:
c#引导项目.rar 3.17MB
转自:http://dws.iteye.com/blog/1168195
转载于:https://www.cnblogs.com/xiangxiong/p/7126242.html
转 让NET C# 程序独立运行(脱离 .NET Framework运行,绿色运行) 未验证相关推荐
- 使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得 ------(我复制别个的)
使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得 昨天晚上奋斗到两点,做完了一个图片处理软件,突然想到上次上网看到C#程序脱离.NET FRAMEWORK运行的文章 ...
- 转载:使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得
昨天晚上奋斗到两点,做完了一个图片处理软件,突然想到上次上网看到C#程序脱离.NET FRAMEWORK运行的文章,于是决定自己动手试一下. 之前看到有用别的方法来实现的,但我还是选择了 ...
- 脱离.Net Framework运行doNet程序的简单方法
脱离.Net Framework运行doNet程序的简单方法(Console) 在.Net Framework下,你就算写一个小小的控制台程序,哪怕只有几K大小,我们必须要安装一个几十M的Framew ...
- .NET程序脱离.NET Framework 运行之道
Net 框架目前逐步在普及了,仍然有很多人在寻找如何让.NET程序脱离.NET框架的方法. 经过我实验后,可行的方式有以下两种: 利用飞信的框架来加载.NET程序 使用Salamander .Net ...
- What?小程序居然可以脱离微信环境运行
小程序≠微信小程序 说到小程序,大部分的读者第一反应,可能是微信小程序.支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的App上. 但是,"小程序&quo ...
- DSP28377S_程序从FLASH部分复制到RAM中运行详解
程序从FLASH部分复制到RAM中运行详解 为什么要复制到RAM中运行 CMD文件中对存储空间的分配 CMD文件中对段的定义 CMD文件中FLASH部分复制到RAM中的定义 main中的操作 编译后如 ...
- 2022最新 wifi大师小程序独立版3.0.8
简介: wifi大师小程序独立版3.0.8,安装源码到根目录 1.网站运行目录public 2.PHP7.2,开通SSL 3.导入数据库文件 4.修改数据库文件里application/databas ...
- Java程序员必知必会之JVM运行时数据区
JVM类加载概述 JVM垃圾回收概述 运行时数据区概述 程序计数器(Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,指向下一个将要 ...
- 分享|小程序游戏在自有APP上的正确运行方法
伴随着小游戏的持续性爆火,愈发多的厂商已经开始将目光放在了小游戏领域并且加入了战斗,都想在此闯出一片天地,分一杯羹. 但是,很明显的是,在现在的小游戏发展过程中,微信早已不是一家独大,掌握主导的权力. ...
最新文章
- TF-IDF算法原理介绍
- 解决Ext JS 4.1版本Tree在刷新时选择第一行的问题
- vs2017中报无法打开包括文件: corecrt.h: No such file or directory
- mysql多实例安装配置演示
- DCP(Deep Closest Point)论文阅读笔记以及详析
- python定时器及数据库操作
- CentOS 7安装megacli
- Oracle数据库update用法总结
- apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)
- ObjectMapper使用详细介绍
- css选择器权重排序_css选择器的权重计算
- ORA-01017 ORA-02063: preceding 2 lines from SQLEMR
- first season twenty-second episode,the color(yellow) dream???
- 大型网站架构技术演进(史上最全)
- 架构的道与术-软件架构设计
- caffe 损失函数
- 腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...
- “新基建”奏响项目建设最强音,长沙上半年重大项目完成投资2142亿元
- PTA 数组 7-5 按字母顺序排列出场国家名称
- CAS: 1260119-01-4, NO2-UIO-66, UIO-66-NO2
热门文章
- 记录docker常用的command
- java实现数字(摘要)签名,生成签名文件,防止文件被人篡改内容,分析和实现
- STM32通过USB实现Bootlader/IAP功能
- 参数形参错误之 SyntaxError: non-default argument follows default argument
- c 语言现代方法13章习题6
- ASCII表完整版(包含16进制对应表)
- C++11: std::function<void()> func
- ROS初学笔记 - C++11与PCL库冲突问题
- c语言坐标输出图片,tc 如何在指定坐标处 输出bmp图片??
- 关于优酷开放SDK之setOnCurrentPositionUpdateListener