【问题标题】:Why is the default platform target for a WPF applications in Visual Studio x86 and not AnyCPU?为什么 Visual Studio x86 中 WPF 应用程序的默认平台目标而不是 AnyCPU?
【发布时间】:2012-07-14 08:37:05
【问题描述】:

当我在 Visual Studio 2012 中创建新的 WPF 应用程序时,平台目标和构建配置默认设置为 x86。为什么会这样?对于一个普通的 WPF 应用程序(没有对混合模式程序集的任何引用),使用 AnyCPU 是否存在任何危险,因此我的 WPF 可执行文件将被 JITed 到我的 x64 机器上的 x64 代码和 x86 机器上的 x86?

【问题讨论】:

    标签: wpf visual-studio-2010 build jit


    【解决方案1】:

    为什么会这样?

    对于大多数应用程序,构建为 32 位实际上更好。 64 位在大多数情况下提供的好处很少,但也有一些明显的缺点(更高的内存使用率、更复杂的多平台依赖管理、更差的调试体验等)。

    但是,如果您的应用程序需要能够使用大量内存,那么 64 位当然有优势(并且在 VS 中很容易切换),但大多数应用程序不属于这艘船。

    这就是为什么 VS 2012 中的新默认设置是在应用程序中使用 AnyCPUPrefer32Bit 而不是 AnyCPU

    【讨论】:

      【解决方案2】:

      根据这个bug report,它是因为在使用x64 代码的x64 机器上编辑并继续的问题而完成的。通过将其更改为 x86,“编辑并继续”可以正常工作。

      切换到 AnyCPU 应该没有危险。我总是这样做。

      【讨论】:

        【解决方案3】:

        如果您选择指定 CPU,那么您会自动将 .exe 限制在一个平台或另一个平台上。

        很少有任何理由这样做,除非您绝对有 32 位依赖项:

        换句话说,不存在“性能”问题。真正的问题是“兼容性”。如果您加载任何 32 位组件,并且您使用的是 64 位平台,那么您必须调用 WOW64。 CLRTIMAGETYPE 允许您这样做。

        【讨论】:

        • 当我阅读问题时,问题是 VS 默认选择特定于平台的设置。
        • 另外 - 通过选择 x86,您不会将 .exe 限制为 x86。 64 位 Windows 将在 WOW64 下运行 x86 可执行文件而不会出现问题。选择 x64 确实有限制,但所有其他选项都没有。
        • +1 @Reed Copsey 和重要的一点。只是想指出(正如里德的回答很清楚)x86 排除了 ARM,但不排除基于 x64 的机器,而 AnyCpuPrefer32 bit 是描述您在前面评论中的意思的确切设置 - 它不规则 ARM 或基于 x64 的机器。 (我知道这句话太长了,可能会让一些人感到困惑,而不是帮助,但是嘿......)
        猜你喜欢
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-21
        • 1970-01-01
        • 2017-08-03
        相关资源
        最近更新 更多