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


    为了运行一个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多的大家伙,现在终于可以摆脱这种尴尬了!

  • 相关阅读:
    洛谷 P2872 [USACO07DEC]道路建设Building Roads
    cogs 29. 公路建设
    cogs 7. 通信线路
    cogs 2478. [HZOI 2016]简单的最近公共祖先
    洛谷 P1342 请柬
    洛谷 P1186 玛丽卡
    洛谷 P1491 集合位置
    启动、停止、重启服务
    洛谷——P1025 数的划分
    洛谷——P3368 【模板】树状数组 2
  • 原文地址:https://www.cnblogs.com/jiewei915/p/1913133.html
Copyright © 2020-2023  润新知