How to Compile with ngen.exe and How to run the native code that is generated?

前端 未结 1 1559
清酒与你
清酒与你 2020-12-28 19:36

I want to compile a C# program using ngen command line for a special purpose. So I create a console application in VS2010 and named it ngentest. A file by name

相关标签:
1条回答
  • 2020-12-28 19:44

    When you compile your C# code, it gets compiled into an IL assembly. And NGEN takes IL assembly as an input and installs the assembly and its dependencies into Native Image Cache.

    For your example binary, you need to open an admin VS Command prompt, then type the following

    ngen install ngentest.exe
    

    This would install your exe and its dependency dll files into the Native Image Cache. You use the filename to the assembly here.

    Then when you run your exe, the .NET runtime will load and run the native image installed to the Native Image Cache. You don't need to take any extra step to have .NET run the Native Image. The runtime checks the Native Image Cache to see if there is a valid Native Image for the IL assembly.

    You can verify that a native image is installed by typing the following command:

    ngen display ngentest
    

    In this case you must use the assembly name. Note that 32 bit ngen will only install and display 32 bit, assemblies and 64 bit ngen only 64 bitassemblies.

    See http://blogs.msdn.com/b/junfeng/archive/2007/02/18/native-image-loading.aspx for more info on Native Image loading.

    Note that ngentest.vhost.exe is an artifact created by VS to provide better debugging experience. It is used by VS. You shouldn't be using that for NGEN or anything for that matter. See the question: What is the purpose of the vshost.exe file? for more info.

    0 讨论(0)
提交回复
热议问题