我有一个应用程序,其中包含Platform作为任何CPU的项目。当在VS2008的64位机器(win7)上运行应用程序时,我可以在任务管理器进程中看到* 32,这意味着它在32位模式下运行。但是我已经阅读了这个应用程序,并将Platform as Any作为任何CPU根据机器运行(在我的情况下是64位)。我都很困惑。请解释。在64位机器上运行32位.NET应用程序
回答
由于VS2008是32位,我希望它也可以启动一个32位的过程。另一个原因可能是你引用了32位的DLLs?
您是否尝试过在VS2008之外运行应用程序 - 它仍处于32位模式?
- 去盖=>配置管理器
- 单击活动解决方案平台下拉列表中选择。
- 在输入或选择新平台下拉列表中,选择'x64'。
- 点击确定。
任何CPU都一样好 - 它应该在64位系统上以64位模式运行应用程序,在32位系统上以32位模式运行应用程序。除非你引用强制应用程序进入32位模式的东西。只有64位才能防止它在32位系统上运行。 –
@Mayur我做了你说的,但选择了x86。我的应用程序现在可以在使用vs2008访问32位dsn的64位机器上成功运行。我的问题是,我必须手动为所有应用程序执行此操作才能工作?什么是通用解决方案? – nishantv
专门为X86编译的应用程序无法以64位模式运行 - 这里一定有些混淆...... –
您确定创建实际可执行文件的项目设置为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和.NET 4.5引入了anycpu32bitpreferred setting:
anycpu32bitpreferred编译您的组件在任何平台上运行。您的应用程序在支持64位和32位应用程序的系统上以32位模式运行。您只能为面向.NET Framework 4.5的项目指定此选项。
上(在Visual Studio中默认值)车削该设置意味着AnyCPU
应用程序将执行32位甚至在64位操作系统。
所有项目都设置为AnyCPU以及.EXE项目的平台目标。但是我的应用程序在32位模式下运行,如任务管理器中所示。另外,如上所述,它的失败是因为它无法在运行时访问IBM DB2 Server Client的32位DSN。 – nishantv
@nishantv:文档位于:http://msdn.microsoft.com/en-us/library/zekwfyz4.aspx。看起来,无论是文档都是错误的,我们有一些事情是你忽视的。 –
- 1. 在XP,Vista,Windows7 ... 32和64位上运行.Net应用程序
- 2. 在Win 7 64位机器上运行32位编译Visual Foxpro应用程序
- 3. 在64位机器上编译32位matlab应用程序(C++)
- 4. 32位应用程序如何在64位Mac上运行?
- 5. 试图在64位Windows客户端上运行32位.NET应用程序
- 6. 在64位机器上编译32位应用程序以获得64位应用程序
- 7. 如何找出为什么.NET应用程序在64位机器上以32位运行
- 8. 如何启用32位.Net应用程序运行在Windows 2012 R2 64位
- 9. 在64位机器上生成32位
- 10. 将32位Web应用程序作为WOW64在64位服务器上运行?
- 11. Microsoft SharePoint的64位DLL正在32位机器上运行
- 12. 防止在64位机器上运行32位安装项目
- 13. 在64位机器上运行32位二进制
- 14. 在java中的64位机器上运行32位dll
- 15. 我可以在32位机器上运行64位dll吗?
- 16. 64位在32位机器上运行的组件COM +导出
- 17. 32位代码在64位Linux机器上运行
- 18. 如何在64位linux机器上运行32位matlab?
- 19. 在32位或64位matlab上运行?
- 20. 在64位机器上运行应用程序(启动时)
- 21. 调试器不会在64位机器上部署32位应用程序
- 22. 在kernelbase.dll中随机崩溃.net应用程序,在Windows 7上运行32位64位
- 23. 64位服务器2003上的32位Web应用程序未运行
- 24. 32位.NET应用程序和64位.NET应用程序有区别吗?
- 25. 需要获取程序文件的文件夹,在64位机器上运行32位应用程序?
- 26. 在64位和32位系统上运行程序
- 27. WiX:阻止32位安装程序在64位Windows上运行
- 28. 如何运行64位机器上的32位API?
- 29. 在64位机器上使用Visual Studio编译32位应用程序
- 30. 32位/ 64位Windows/Linux应用程序
是的,所有的DLL也是32位。我也在访问IBM Data Server客户端v9.5.3,但是我收到“无法找到或加载注册的.Net Framework数据提供程序”。我试图解决这个问题,我认为这是由于32位64位冲突。关于这个 – nishantv
你有什么想法吗?如果你引用的是32位的DLL(不是AnyCPU或X64),那么应用程序将以32位模式运行,因为你不能在64位中使用32位DLL位应用程序,反之亦然。 –