用ngen可以生成本地代码.但是 ngen生成的本地码是直接安装在系统的Cache当中的,没办法拿到最终的本地代码结果,而且这样的本地码并没有与.NET CLR和类库脱离干系。目前.NET应该没办法编译成纯本地代码的形式,

解决方案 »

  1.   

    C#不能脱离.NET Framework运行(目前为止)
      

  2.   

    本机映像生成器创建托管程序集的本机映像,并且将该映像安装到本地计算机的本机映像缓存中。在程序集上运行 Ngen.exe 可以提高程序集的加载和执行速度,原因是它可以从本机映像缓存中还原代码和数据结构,而不是动态生成它们。本机映像是包含已编译的处理器特定的机器码的文件。在您生成一个程序集的本机映像后,每当运行库运行该程序集时,都会自动尝试找到并使用该本机映像。如果您在调试或分析方案中运行程序集,运行库将查找已由 /debug、/debugopt 或 /prof 选项生成的本机映像。如果无法找到合适的本机映像,则运行库回转到标准 JIT 编译。
    以下命令生成具有指定路径的 myAssembly.exe 的本机映像。ngen c:\myfiles\myAssembly.exe
    以下命令生成 myAssembly.exe、myLibOne.dll 和 myLibTwo.dll 的本机映像。ngen myAssembly.exe myLibOne.dll myLibTwo.dll
    以下命令生成 myLibrary.dll 的本机映像。如果 myLibrary.dll 不在当前目录中,则该工具进行探测以找到它。ngen myLibrary
    以下命令生成具有指定路径的 myLibrary.dll 的本机映像。ngen c:\myfiles\myLibrary.dll
    以下命令显示本机映像缓存中的所有本机映像。ngen /show
    以下命令显示本机映像缓存中名为 myAssembly 的所有本机映像。ngen /show myAssembly
    以下命令显示本机映像缓存中名为 myAssembly、版本为 1.0 的所有本机映像。ngen /show "myAssembly, version=1.0.0.0"
    以下命令删除本机映像缓存中名为 myAssembly 的所有本机映像。ngen /delete myAssembly