当前位置:  开发笔记 > 编程语言 > 正文

x64 .NET编译/ Process Explorer奇怪

如何解决《x64.NET编译/ProcessExplorer奇怪》经验,为你挑选了1个好方法。

如果我要说的任何内容毫无意义或忽视了一些显而易见的东西,那么道歉 - 我对CLR内部的了解是不稳定的.

如果我理解正确,那么如果我只是在VS2K5中为'AnyCPU'构建一个解决方案(或者使用这些设置指向那个.sln文件的MSBuild),那么二进制文件只能编译到MSIL.然后,如果在32位平台上执行,它们会被JIT打成32位,如果在x64上执行,它们会被64位代码...对吧?

这些DLL用于Web应用程序并托管在W3WP.exe进程中.Process Explorer告诉我W3WP是一个64位进程.

但是当我使用Process Explorer在DLL视图中检查其中一个DLL的属性时,它会显示:'Image:32-bit'.是什么赋予了?

如果我对有问题的DLL运行corflags它会告诉我:ILONLY 1,32BIT 0但是PE PE32.我的理解是,这意味着它只是编译到IL,不是它不限于32位或64位,但我不完全清楚.PE32标志是否与它上面显示的32位有关?



1> Jerome Laban..:

您的问题与此问题有关.您在进程资源管理器中看到的是图像的类型,它与程序集的corflags中指定的"运行时兼容性"类型不同.

设置"Any Cpu"的目的是强制本机映像和程序集中最常见的分母,这样它就可以让.NET的Windows引导程序选择哪种运行时最适合当前平台.

因此,对于您的示例,您确实有32位图像(由PE标头指定),包含"任何CPU"程序集(由装配的CorFlags指定).

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有