在64位计算机上运行32位.NET应用程序
我有一个应用程序,其项目的平台与任何CPU相同。当在VS2008的64位机器(win7)上运行应用程序时,我可以看到任务管理器进程中的*32,这意味着它在32位模式下运行。但我已经读到,任何CPU都是根据机器运行的(在我的例子中是64位的),使用平台的应用程序。我都糊涂了。请解释。由于VS2008是32位的,我希望它也能启动32位进程。另一个原因可能是您引用的是仅32位DLL在64位计算机上运行32位.NET应用程序,.net,32bit-64bit,.net,32bit 64bit,我有一个应用程序,其项目的平台与任何CPU相同。当在VS2008的64位机器(win7)上运行应用程序时,我可以看到任务管理器进程中的*32,这意味着它在32位模式下运行。但我已经读到,任何CPU都是根据机器运行的(在我的例子中是64位的),使用平台的应用程序。我都糊涂了。请解释。由于VS2008是32位的,我希望它也能启动32位进程。另一个原因可能是您引用的是仅32位DLL 您是否尝试过在VS2008之外运行应用程序?它是否仍处于32位模式?由于VS2008是32位的,我希望它也能启动32位进
您是否尝试过在VS2008之外运行应用程序?它是否仍处于32位模式?由于VS2008是32位的,我希望它也能启动32位进程。另一个原因可能是您引用的是仅32位DLL 您是否尝试过在VS2008之外运行应用程序-它是否仍处于32位模式
是否确实创建实际可执行文件的项目设置为
AnyCPU
,而不是x86
?此项目以及所有引用的项目应设置为AnyCPU
。如果这样做,该进程将在64位Windows上作为64位进程运行(在32位Windows上作为32位进程运行)
.EXE项目的平台目标决定了应用程序的“位”。如果任何引用的.DLL项目的“位”与正在运行的应用程序的“位”不兼容,则会出现运行时错误。例如,如果AnyCPU
.EXE项目引用了x86
.DLL项目,它将在32位窗口上成功运行,但在64位窗口上失败,并出现运行时错误
问题是关于Visual Studio 2008,但Visual Studio 2012和.NET 4.5引入了: anycpu32bitpreferred编译程序集以在任何平台上运行。您的应用程序在支持64位和32位应用程序的系统上以32位模式运行。您只能为以.NET Framework 4.5为目标的项目指定此选项
启用此设置(Visual Studio中的默认设置)意味着即使在64位操作系统上,
AnyCPU
应用程序也将以32位的方式执行。是否确实将创建实际可执行文件的项目设置为AnyCPU
,而不是x86
?此项目以及所有引用的项目应设置为AnyCPU
。如果这样做,该进程将在64位Windows上作为64位进程运行(在32位Windows上作为32位进程运行)
.EXE项目的平台目标决定了应用程序的“位”。如果任何引用的.DLL项目的“位”与正在运行的应用程序的“位”不兼容,则会出现运行时错误。例如,如果AnyCPU
.EXE项目引用了x86
.DLL项目,它将在32位窗口上成功运行,但在64位窗口上失败,并出现运行时错误
问题是关于Visual Studio 2008,但Visual Studio 2012和.NET 4.5引入了: anycpu32bitpreferred编译程序集以在任何平台上运行。您的应用程序在支持64位和32位应用程序的系统上以32位模式运行。您只能为以.NET Framework 4.5为目标的项目指定此选项
启用此设置(Visual Studio中的默认设置)意味着即使在64位操作系统上,
AnyCPU
应用程序也将以32位的方式执行。yes所有DLL也是32位的。我也在访问IBM Data Server客户端v9.5.3,但我得到的信息是“无法找到或加载已注册的.Net Framework数据提供程序”。我正在努力解决这个问题,我认为这是由于32位-64位冲突造成的。你对此有什么想法吗?如果你引用的DLL是32位的(不是任何CPU或X64),那么应用程序将以32位模式运行,因为你不能在64位应用程序中使用32位DLL,反之亦然。是的,所有DLL也是32位的。我也在访问IBM Data Server客户端v9.5.3,但我得到的信息是“无法找到或加载已注册的.Net Framework数据提供程序”。我正在努力解决这个问题,我认为这是由于32位-64位冲突造成的。你对此有什么想法吗?如果你引用32位DLL(不是任何CPU或X64),那么应用程序将以32位模式运行,因为你不能在64位应用程序中使用32位DLL,反之亦然。任何CPU都一样好——它应该在64位系统上以64位模式运行应用程序,在32位系统上以32位模式运行应用程序。除非引用的内容强制应用程序进入32位模式。将其设为64位只能防止其在32位系统上运行。@Mayur我按您所说的做了,但选择了x86。我的应用程序现在正在使用vs2008访问32位dsn的64位计算机上成功运行。我的问题是,我是否必须手动为所有应用程序执行此操作才能正常工作?一般解决方案是什么?专门为X86编译的应用程序不能在64位模式下运行-这里一定有一些混乱…任何CPU都一样好-它应该在64位系统上以64位模式运行应用程序,在32位系统上以32位模式运行应用程序。除非引用的内容强制应用程序进入32位模式。将其设为64位只能防止其在32位系统上运行。@Mayur我按您所说的做了,但选择了x86。我的应用程序现在正在使用vs2008访问32位dsn的64位计算机上成功运行。我的问题是,我是否必须手动为所有应用程序执行此操作才能正常工作?是什么