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