在64位计算机上运行32位.NET应用程序

时间:2012-07-04 11:17:21

标签: .net 32bit-64bit

我有一个应用程序,其项目具有Platform as Any CPU。当在VS2008中的64位机器(win7)上运行应用程序时,我可以在任务管理器进程中看到* 32,这意味着它以32位模式运行。但是我已经读过使用Platform as Any CPU的应用程序根据机器运行(在我的情况下为64位)。我都很困惑。请解释一下。

3 个答案:

答案 0 :(得分:2)

您确定创建实际可执行文件的项目是否设置为AnyCPU而不是x86?此项目以及所有引用的项目应设置为AnyCPU。如果这样做,该过程将在64位Windows上作为64位进程运行(并在32位Windows上作为32位进程运行)。

它是.EXE项目的平台目标,用于确定应用程序的“位数”。如果任何引用的.DLL项目的“位数”与正在运行的应用程序的“位数”不兼容,您将收到运行时错误。例如。如果AnyCPU .EXE项目引用x86 .DLL项目,它将在32位Windows上成功运行,但在64位Windows上失败并出现运行时错误。


问题是关于Visual Studio 2008,但Visual Studio 2012 with .NET 4.5引入了anycpu32bitpreferred setting

  

anycpu32bitpreferred 编译您的程序集以在任何平台上运行。您的应用程序在支持64位和32位应用程序的系统上以32位模式运行。您只能为面向.NET Framework 4.5的项目指定此选项。

启用此设置(Visual Studio中的默认设置)意味着即使在64位操作系统上,AnyCPU应用程序也将以32位执行。

答案 1 :(得分:1)

由于VS2008是32位,我希望它也可以启动32位进程。另一个原因可能是您引用了仅32位的DLL?

您是否尝试在VS2008之外运行应用程序 - 它是否仍处于32位模式?

答案 2 :(得分:0)

  1. 转到Build =>配置管理器
  2. 单击“Active Solution Platform”下拉列表,然后选择。
  3. 在“输入”或选择新平台下拉列表中,选择“x64”。
  4. 点击确定。