为什么我的应用程序(我使用Any CPU编译)在我的64位计算机上作为32位进程运行?

时间:2012-06-06 16:35:19

标签: c# 64-bit anycpu

我有以下代码无法在x64操作系统上运行,因为 notepad.exe 是x64,而x86应用程序无法获取x64进程的模块信息。

prc.Modules[0].FileName

.Net Exception抛出我的代码

System.ComponentModel.Win32Exception(0x80004005):32位进程无法接受 64位进程的ess模块​​。

根据此论坛上的许多答案和文章,MSDN,...,我知道我需要使用AnyCPU,因为使用x64对我没有特别的好处。 (不好意思:我测试了一个检查性能的代码,x64代码跑得快了~40毫秒。没关系我不希望我的代码运行速度快40毫秒:D) 相反,我不会这样的问题。但即使在AnyCPU配置上编译时也是如此。我的错误仍然存​​在,此外,在任务管理器中,我在流程名称末尾看到(32位)

我不知道那是错的。 VS 2011 Beta(x64) Windows 8 Consumer Preview(x64)

真诚的,你的, Peyman Mortazavi

2 个答案:

答案 0 :(得分:3)

进入项目属性。在左侧,选择Build。

查看当前活动平台的“平台目标:”设置。将其更改为x64。

(我怀疑你的“平台目标:”将明确表示“任何CPU”的x86)

enter image description here

答案 1 :(得分:2)

虽然提问者已经接受了答案,但我觉得答案是不完整的,因为提问者提到他正在使用Visual Studio 2011,因此假设目标.Net Framework为4.5,关于什么“几乎没有注意事项” AnyCPU “表示。

请参阅这两个链接,以便更好地了解“ AnyCPU ”的含义随时间的变化情况。

  1. http://blogs.microsoft.co.il/sasha/2012/04/04/what-anycpu-really-means-as-of-net-45-and-visual-studio-11/
  2. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/platform-compiler-option
  3. 通过这些链接,您可以得到应用程序为何以32位进程运行的问题的答案

      

    在64位Windows操作系统上:

         

    使用/ platform编译的可执行文件:anycpu32bitpreferred执行   32位CLR。

    这是你的罪魁祸首。

    enter image description here