让C#程序 run anywhere ——脱离.net Framework框架环境运行

    又开始做毕业设计了,国庆过的真晕啊。

    2008年10月3日晚,很幸运笔记本被病毒光顾了。当时用的是一个号称俄罗斯军方专用的杀毒软件(名字就不说了,其实之前一直用卡巴,只是好奇就换了个杀毒软件玩玩), 下下来的东东 我还用这个杀毒软件扫描过,运行完下载的东东,电脑就出问题了,只要进行文件操作就出“这个磁盘文件不存在”的错误,关机。。。就开不了了。祸不单行,光驱在那个时候不知道什么原因读不了盘。。。憋了3天没用电脑,发现是在是不行了。

    最后查明原因,光驱的光头上灰了,擦了点酒精,又可以开工了。想偷懒,直接运行以前的C#项目程序,嘿嘿 结果可想而知。查阅资料,发现大家都有同感,为了运行一个100K的C#程序,而安装100M多的.NET 框架。。。。。于是发现偷懒的方法多多,试验总结如下:

 

    现成的工具有:

    (1)Xenocode 的postbuidle或者vas

    (2)Salamander .NET Linker .
    (3)MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具molebox,thinstall等.


    (1)好像是使用虚拟机环境来模拟框架需要的注册表信息和文件信息。Xenocode号称的生成native代码功能实际上就是指的这个功能。感觉兼容性不怎么好。
    (2)是Remotesoft的一个产品,似乎没有可以下载的,但是其兼容性似乎很不错。移动的飞信软件就利用了它的核心。
    (3)实际上是利用了 Remotesoft的内核文件,然后自己实现了一个loader。好像是使用的早期的内核文件,兼容性也不太好。
查阅资料,并按照资料的方法进行了试验,发现有一种方法很不错,记录下来,记录下来:


         
    首先下载一个飞信,并安装起来。在安装目录中有一个VMDotNet 目录(默认安装的话,位置在C:/Program Files/China Mobile/Fetion下)。

    把这个目录复制出来,放到自己的C#程序一起,当在没有安装.net框架的环境里运行时,用这个命令:

    FetionVM.exe   路径/C#程序 

    FetionVM.exe这个文件在VMDotNet 目录里可以找到
    这个是虚拟环境的loader。就是直接把你的 .Net 程序 作为命令行参数传递给 FetionVM.exe 就可以在这个虚拟环境中执行你的。net程序了。

     可以自己写一个启动程序,首先检查是否安装了框架,如果有则可以直接运行。否则调用虚拟环境运行。

     据资料记载:这个启动程序飞信也有,如果不想自己写就直接拿飞信安装目录中的 Feition.exe,但是这样的话 你自己的.Net程序的名字必须叫 FeitionFX.exe 。把它和Feition.exe 放在同一目录下,直接执行 Feition.exe 即可。

    另外,如果你对。Net程序使用了加密保护,需要注意一下,目前市面上的大部分。Net加密工具加密后的程序集不能在这个虚拟环境中运行的。

    这个东西除了能实现脱离 。net框架运行外,还有另外一个作用让.net程序运行在指定版本的 .net 框架中(虽然机器上安装了.net框架,仍然可以让.net程序在这个虚拟框架下运行)。

 

 

    往往要在别人机器上运行自己.net的程序,还要一再和别人解释为什么运行之前还要在他的电脑上安装一个100M多的大家伙,现在终于可以摆脱这种尴尬了!爽!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值