所以,据我所知,它确实需要用MSIL编写的可执行文件和dll文件,并执行JIT作业:将MSIL代码转换为本地机器代码。 对? 所以运行ngen使用以下命令生成我的程序的本地映像:
ngen install myProgram.exe
这需要一段时间,但我发现生成的文件是在C:WindowsassemblyNativeImages_v4.0.30319_32myProgramdb1496cf0295bbe6a9242d86c0d8e091myProgram.ni.exe
但是那个可执行文件的内容究竟是什么? 我的C#程序的机器代码版本? 它不运行(见下文)。 如果我想向用户提供我的程序的本地版本,如果我在每个*.exe和*.dll运行ngen ,并将生成的图像文件给用户,它会正常运行吗? 它仍然需要.NET框架?
但是,生成图像不起作用,并给“这个应用程序无法在您的电脑上运行”错误信息。
Windows窗体中的标准Windows菜单栏
控制音量混音器
WPF绑定Canvas.Left / Canvas.Top到Point DependencyProperty,使用PointAnimation
为什么在Windows中find打印机状态非常困难?
如何控制.NET服务引用的文件名?
防止单个可执行文件的多个进程实例
在安装时从app.config设置中设置.NET Windows服务的angular色
Windows窗体inheritance
ngen将JIT代码编译为机器代码是正确的,但仍然需要.net运行时库来运行程序。 如果你的目标是制作一个不需要.net框架的程序,它将无法工作。
把它看作是编写一个动态链接到C ++运行时的本地程序,必须安装c ++运行时才能使程序工作。 .net没有与本机应用程序一样的静态链接,您必须始终安装运行时。
你也不能直接运行ngen构建的图像,当你运行ngen的时候它将它安装到程序集缓存(列出的目录),当你运行你的.net应用程序时,它会找到缓存中的副本并使用预先生成的代码,你可以不直接运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。