.NET软件在x64上运行但在x86上为任何CPU编译(VS2008)

时间:2011-02-25 13:55:44

标签: .net-3.5 x86 64-bit anycpu

我有一个问题,即我在编译程序中遇到运行时错误。这在开发环境(x86)中工作正常,但在生产环境(x64)上没有。

我发现了this文章,这似乎意味着将软件编译为任何CPU都可以将软件作为x64软件运行,如果它在64位环境中运行的话。

是这种情况,如果是这样,软件是否应该在任何CPU下编译(因为它似乎导致两种环境不匹配)?

1 个答案:

答案 0 :(得分:2)

如果您仅使用托管代码,AnyCPU非常棒。托管代码可以在32位进程或64位进程中执行。使用AnyCPU,框架会选择操作系统原生的位数。

对于非托管代码,情况并非如此。它需要编译为32位或64位代码。当然,由于WoW64子系统,64位Windows可以运行64位进程。

但是64位进程无法加载32位模块(DLL,OCX等)。

这意味着如果您的程序使用某种类型的非托管模块,最好确保手动设置位数,以便所有组件具有相同的位数。