5

I've studied the information about building apps with a different target platforms options in visual studio, but I still can't understand the following things:

when do we need to set x86 or x64 target?
what advantages gives us setting a specific target platform (x86 or x64) over setting 'any cpu'?
isn't it easier always to set 'any cpu'?

4

1 回答 1

3

截至目前,平台目标中有三个选项。x86、x64、任何 CPU。更糟糕的是,有一个名为“Prefer 32bit”的复选框。

当您开发应用程序时,您必须确保其Any CPU 已启用禁用 Prefer 32bit 以获得最大兼容性。

然而,有时您将使用本地调用来从特定 API 进行平台调用(例如:您正在调用 32 位本地 dll)。然后启用 Any CPU 将在 64 位操作系统中将您的应用程序作为 64 位进程运行。这将在运行时引入异常。您应该针对 x86 平台。64 位本机调用也是如此,您应该仅将其定位为 x64。

让我们看看为什么Prefer 32bit在那里。Windows 有一个称为 ARM 的新目标类型(Windows 8 ARM 32 位,截至推出首选 32 位)。当启用此选项并选择任何 CPU时。编译为 x86 的 .NET 应用程序将无法在 ARM Windows 系统上运行,但“任何 CPU 32 位首选”应用程序将成功运行。

继续禁用Prefer 32bit,因为没有人使用 Windows 8 ARM。Windows 10 ARM 已解决此问题。

于 2018-06-20T16:28:46.977 回答