【问题标题】:When it's needed to use x86 or x64 target platform?何时需要使用 x86 或 x64 目标平台?
【发布时间】:2018-06-20 14:42:46
【问题描述】:

我在Visual Studio中研究了有关使用不同目标平台选项构建应用程序的信息,但我仍然无法理解以下内容:

我们什么时候需要设置 x86 或 x64 目标?
与设置“任何 cpu”相比,我们设置特定目标平台(x86 或 x64)有什么优势?
总是设置'任何cpu'不是更容易吗?

【问题讨论】:

  • 例如,当您需要链接到只有 32 位或 64 位的本机代码模块时,您需要强制应用程序以该模式运行。
  • 我喜欢 Scott Hanselmans 的博客:hanselman.com/blog/…

标签: c# .net x86 64-bit anycpu


【解决方案1】:

截至目前,平台目标中有三个选项。 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 位 之日起)。当启用此选项并选择 Any CPU 时。编译为 x86 的 .NET 应用程序将无法在 ARM Windows 系统上运行,但“任何 CPU 32 位首选”应用程序将成功运行。

以后禁用首选 32 位,因为没有人使用 Windows 8 ARM。 Windows 10 ARM 已解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2011-08-21
    • 2017-06-11
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多