当我在Visual Studio 2012中创建一个新的WPF应用程序时,默认情况下平台目标和构建配置是设置为x86的。为什么会这样呢?对于一个普通的WPF应用程序(没有引用混合模式程序集),如果我使用AnyCPU,是否存在在x64机器上将我的WPF可执行文件JIT编译为x64代码,在x86机器上编译为x86代码的任何危险性?
当我在Visual Studio 2012中创建一个新的WPF应用程序时,默认情况下平台目标和构建配置是设置为x86的。为什么会这样呢?对于一个普通的WPF应用程序(没有引用混合模式程序集),如果我使用AnyCPU,是否存在在x64机器上将我的WPF可执行文件JIT编译为x64代码,在x86机器上编译为x86代码的任何危险性?
如果你选择指定一个CPU的话,那么你就会自动限制你的.exe文件只能在其中一种平台上运行。
除非你绝对需要32位的依赖关系,否则很少有这样做的理由:
换句话说,并没有“性能”问题。真正的问题是“兼容性”。如果你加载任何32位组件,并且你在64位平台上,那么你必须调用WOW64。CLRTIMAGETYPE可以让你做到这一点。
AnyCpuPrefer32
位是描述前面评论中所说的确切设置 - 它不排除ARM或基于x64的机器。(我知道这句话太长了,可能会让一些人更加困惑,但是...) - Ruben Bartelink