7

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

4

3 回答 3

5

为什么会这样?

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

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

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

于 2012-06-14T16:33:44.470 回答
2

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

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

于 2012-06-14T16:38:29.710 回答
0

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

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

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

于 2012-06-14T16:28:39.533 回答