最近业余捣鼓monogame,天然而然就关注到了.net程序脱离framework发布的问题上了,linux
度娘,谷歌娘 都通过一番查找,无非分为以下几类方法:工具
一、直接使用mono运行时,附带 bin、lib文件夹,删去没必要要的文件,缺点是须要写一个引导器或者批处理之类的工具,经过mono.exe或monow.exe启动动画
二、采用mono官方方案boundle,至关于写了一个简单exe内嵌mono虚拟机,执行本身的资源文件,参看http://www.linuxdot.net/bbsfile-3354 缺点可能就是麻烦了,既要cygwin又要各类配置文件,洋洋洒洒一大页。。。.net
三、借助第三方打包工具,很差意思,具体的工具名字我忘记了,试过了好几款,基本都收费,用起来并不算很方便(脱离framework只是卖点之一)orm
四、借用飞信的虚拟机,这个,记得N年前刚学C#的时候就有这个方案了,针对2.0有效,听说是移动画大价钱买的,如今已经放弃改用C++重写了客户端。。资源
总之,我能找到的方案基本就以上了。不过说实话,没一个用起来省心的- -get
后来,我想了下,有了本身的一套懒人方案:虚拟机
一、采用MONO虚拟机(最新版本已经支持winform,C#4.0特性,至关给力)form
二、hook monow.exe的启动参数,重定向到自定义程序集打包
三、(可选)若是以为不必采用客户机的.net,能够直接将bin文件夹内的文件用 Enigma Virtual Box (一款免费的打包工具)打包成单一EXE
四、运行程序,无问题后,除动态读取的资源外,其他直接所有选中删除,win7下提示不能删除的选择忽略(lib文件夹要多迭代删除几回),或本身写一个批处理
以上几步作完后,程序集就彻底脱离framework了,简单有效 ;-)