假设我有一个需要在x86和x64平台上运行的.Net Framework 3.5 SP1 / CLR 2.0应用程序。假设无论出于何种原因,我还需要创建单独的x86和x64安装程序。
因为我还有一个特定于x64的安装程序,将应用程序本身重新编译为x64而不是以“AnyCPU”为目标会有什么好处吗?
除了生成的程序集的标题信息之外,将目标设置为x64是否会发生任何变化?
答案 0 :(得分:4)
如果指定x64,它会更改程序的某些默认内存设置,使其在内存压力较大的程序中性能稍微提高一些。使用x64(link)
进行编译时会分配更大的线程堆栈答案 1 :(得分:2)
只要您不是Ngen
任何程序集,最好留下“AnyCPU”,让JIT以架构为目标。
答案 2 :(得分:1)
我发现当我包装本机x86 dll时,需要为x86平台编译包装器程序集,否则我会在x64机器上抛出BadImageFormatException。然后就是那种雪球,因为所有引用该程序集的程序集也需要为x86平台编译。
可能我只是做错了什么,但这就是我发现的。如果我没有使用本机dll,那么我会把所有的程序集都留作“AnyCPU”。
答案 3 :(得分:0)
我对.net程序集知之甚少,但总的来说,如果你知道一个程序只能在x64架构中执行,用x64机器码编译它你会得到一些性能提升,你会丢失没有(只要你已经知道它只会在x64环境中执行)。