最近业余捣鼓monogame,自然而然就关注到了.net程序脱离framework发布的问题上了,

度娘,谷歌娘 都经过一番查找,无非分为如下几类方法:

1、直接使用mono运行时,附带 bin、lib文件夹,删去不必要的文件,缺点是需要写一个引导器或者批处理之类的工具,通过mono.exe或monow.exe启动

2、采用mono官方方案boundle,相当于写了一个简单exe内嵌mono虚拟机,执行自己的资源文件,参看http://www.linuxdot.net/bbsfile-3354 缺点可能就是麻烦了,既要cygwin又要各种配置文件,洋洋洒洒一大页。。。

3、借助第三方打包工具,不好意思,具体的工具名字我忘记了,试过了好几款,基本都收费,用起来并不算很方便(脱离framework只是卖点之一)

4、借用飞信的虚拟机,这个,记得N年前刚学C#的时候就有这个方案了,针对2.0有效,据说是移动画大价钱买的,现在已经放弃改用C++重写了客户端。。

总之,我能找到的方案基本就以上了。不过说实话,没一个用起来省心的- -

后来,我想了下,有了自己的一套懒人方案:

1、采用MONO虚拟机(最新版本已经支持winform,C#4.0特性,相当给力)

2、hook monow.exe的启动参数,重定向到自定义程序集

3、(可选)如果觉得没必要采用客户机的.net,可以直接将bin文件夹内的文件用 Enigma Virtual Box (一款免费的打包工具)打包成单一EXE

4、运行程序,无问题后,除动态读取的资源外,其余直接全部选中删除,win7下提示不能删除的选择忽略(lib文件夹要多迭代删除几次),或自己写一个批处理

以上几步做完后,程序集就完全脱离framework了,简单有效 ;-)

如对hook工具有需要,请自取http://git.oschina.net/flywuya/UsefullTools

简单方法打包.net程序集脱离framework的更多相关文章

  1. 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)

    转载自:   DGPLM博客 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)

  2. [转] maven打包可运行的fat-jar的简单方法

    [From] https://blog.csdn.net/tearsky253/article/details/75948721 问题 在使用“mvn package”命令编译application之 ...

  3. Office2003/2010等集成SP的简单方法

    Office2003集成SP的简单方法 需要准备的工具:Office 2003 光盘镜像.SP3更新包.Office 2003 序列号.UltraISO,7-zip或winrar,虚拟光驱 步骤一:提 ...

  4. Xcode7使用插件的简单方法&&以及怎样下载到更早版本的Xcode

    Xcode7自2015年9上架以来也有段时间了, 使用Xcode7以及Xcode7.1\Xcode7.2的小伙伴会发现像VVDocumenter-Xcode\KSImageNamed-Xcode\HO ...

  5. chm转换为html的超简单方法

    在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile ...

  6. JS去掉首尾空格 简单方法大全(原生正则jquery)

    JS去掉首尾空格 简单方法大全 var osfipin= ' http://www.cnblogs.com/osfipin/ '; //去除首尾空格 osfipin.replace(/(^\s*)|( ...

  7. python反转字符串(简单方法)及简单的文件操作示例

    Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...

  8. 使用strace工具故障排查的5种简单方法

    使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...

  9. PhotoShop中画圆角矩形最简单方法(图文并茂)!

    PhotoShop中画圆角矩形最简单方法(图文并茂)! 1. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHhubjUyMA==/font/5a6L5L ...

随机推荐

  1. JavaScript总结3—对象

    对象是JavaScript的基本类型,他可以从一个称为原型的对象继承属性,这种原型式继承是JavaScript的核心特征.对对象比较常见的操作有:创建,设置,查找,删除,检测和枚举他的属性.每个对象都 ...

  2. 解决myeclipse过期问题

    一般myeclise使用期限为30天,超过之后,会频繁的提醒你,购买软件,很讨厌,有个这个小工具,,以后再也不怕啦!!! 使用方法: 1:将这个类导入到myeclipse包中 2:运行main方法,提 ...

  3. [转]使用ADO.NET访问Oracle存储过程

    本文转自:http://www.cnblogs.com/datasky/archive/2007/11/07/952141.html 本文讨论了如何使用 ADO.NET 访问 Oracle 存储过程( ...

  4. [转]Creating Unit Tests for ASP.NET MVC Applications (C#)

    本文转自:http://www.asp.net/mvc/tutorials/older-versions/unit-testing/creating-unit-tests-for-asp-net-mv ...

  5. ArrayBlockingQueue和LinkedBlockingQueue分析

        JAVA并发包提供三个常用的并发队列实现,分别是:ConcurrentLinkedQueue.LinkedBlockingQueue和ArrayBlockingQueue. Concurren ...

  6. requirejs 定义模块中含有prototype

    因为我对requirejs不熟悉,不清楚如何定义带有prototype的模块, 在看了:https://gist.github.com/jonnyreeves/2474026 的demo之后,就明白了 ...

  7. JDBC入门连接MySQL查数据

    在MySQL中建立user表,插入数据 create table user( id int, name varchar(10), age int )engine myisam charset utf8 ...

  8. 关于c#生成word。

    需求:需要把数据做成这样的效果.一个页面展示一个r单子数据. object filename = ""; Object Nothing = System.Reflection.Mi ...

  9. 1 前言:WPF之What&Why

    转载:http://blog.csdn.net/fwj380891124 自古以来,生产工具的先进程度就代表了生成力的先进程度-------生成力的发展要求人们不断的研发出新的生产工具,新生成工具的诞 ...

  10. 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)

    在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...