但是.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运行,绿色运行) 未验证相关推荐

  1. 使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得 ------(我复制别个的)

    使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得 昨天晚上奋斗到两点,做完了一个图片处理软件,突然想到上次上网看到C#程序脱离.NET FRAMEWORK运行的文章 ...

  2. 转载:使用飞信VMDotNet使C#程序脱离.NET FRAMEWORK也能运行的一些心得

    昨天晚上奋斗到两点,做完了一个图片处理软件,突然想到上次上网看到C#程序脱离.NET FRAMEWORK运行的文章,于是决定自己动手试一下.        之前看到有用别的方法来实现的,但我还是选择了 ...

  3. 脱离.Net Framework运行doNet程序的简单方法

    脱离.Net Framework运行doNet程序的简单方法(Console) 在.Net Framework下,你就算写一个小小的控制台程序,哪怕只有几K大小,我们必须要安装一个几十M的Framew ...

  4. .NET程序脱离.NET Framework 运行之道

    Net 框架目前逐步在普及了,仍然有很多人在寻找如何让.NET程序脱离.NET框架的方法. 经过我实验后,可行的方式有以下两种: 利用飞信的框架来加载.NET程序 使用Salamander .Net ...

  5. What?小程序居然可以脱离微信环境运行

    小程序≠微信小程序 说到小程序,大部分的读者第一反应,可能是微信小程序.支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的App上. 但是,"小程序&quo ...

  6. DSP28377S_程序从FLASH部分复制到RAM中运行详解

    程序从FLASH部分复制到RAM中运行详解 为什么要复制到RAM中运行 CMD文件中对存储空间的分配 CMD文件中对段的定义 CMD文件中FLASH部分复制到RAM中的定义 main中的操作 编译后如 ...

  7. 2022最新 wifi大师小程序独立版3.0.8

    简介: wifi大师小程序独立版3.0.8,安装源码到根目录 1.网站运行目录public 2.PHP7.2,开通SSL 3.导入数据库文件 4.修改数据库文件里application/databas ...

  8. Java程序员必知必会之JVM运行时数据区

    JVM类加载概述 JVM垃圾回收概述 运行时数据区概述 程序计数器(Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,指向下一个将要 ...

  9. 分享|小程序游戏在自有APP上的正确运行方法

    伴随着小游戏的持续性爆火,愈发多的厂商已经开始将目光放在了小游戏领域并且加入了战斗,都想在此闯出一片天地,分一杯羹. 但是,很明显的是,在现在的小游戏发展过程中,微信早已不是一家独大,掌握主导的权力. ...

最新文章

  1. TF-IDF算法原理介绍
  2. 解决Ext JS 4.1版本Tree在刷新时选择第一行的问题
  3. vs2017中报无法打开包括文件: corecrt.h: No such file or directory
  4. mysql多实例安装配置演示
  5. DCP(Deep Closest Point)论文阅读笔记以及详析
  6. python定时器及数据库操作
  7. CentOS 7安装megacli
  8. Oracle数据库update用法总结
  9. apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)
  10. ObjectMapper使用详细介绍
  11. css选择器权重排序_css选择器的权重计算
  12. ORA-01017 ORA-02063: preceding 2 lines from SQLEMR
  13. first season twenty-second episode,the color(yellow) dream???
  14. 大型网站架构技术演进(史上最全)
  15. 架构的道与术-软件架构设计
  16. caffe 损失函数
  17. 腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...
  18. “新基建”奏响项目建设最强音,长沙上半年重大项目完成投资2142亿元
  19. PTA 数组 7-5 按字母顺序排列出场国家名称
  20. CAS: 1260119-01-4, NO2-UIO-66, UIO-66-NO2

热门文章

  1. 记录docker常用的command
  2. java实现数字(摘要)签名,生成签名文件,防止文件被人篡改内容,分析和实现
  3. STM32通过USB实现Bootlader/IAP功能
  4. 参数形参错误之 SyntaxError: non-default argument follows default argument
  5. c 语言现代方法13章习题6
  6. ASCII表完整版(包含16进制对应表)
  7. C++11: std::function<void()> func
  8. ROS初学笔记 - C++11与PCL库冲突问题
  9. c语言坐标输出图片,tc 如何在指定坐标处 输出bmp图片??
  10. 关于优酷开放SDK之setOnCurrentPositionUpdateListener