假设我们有一个针对 Any CPU 的应用程序,但此应用程序使用具有两种风格的第三方程序集,32位和64位。必须使用哪一个?
如果“Any”选项以32位和64位运行应用程序,我该如何为它提供两个版本的程序集?
我的特殊需求是.NET SQLite驱动程序。
答案 0 :(得分:2)
真的很简单:
如果你的应用程序针对“任何CPU”,所有条件相同,该应用程序可以在32位或64位系统上运行。
如果您的“任何CPU”应用程序依赖于32或64位dll,如果它尝试在缺少依赖关系的系统上运行,则会失败。
如果你想“到处跑”,那么你最好的选择可能是针对32位(而不是“任何CPU”)。除非您对64位有特殊要求,否则您确实不需要64位。
如果您遇到在64位运行应用程序的“BadImageExceptions”,您可能希望考虑“自定义操作”:
http://adamhouldsworth.blogspot.com/2010/10/64bit-custom-actions.html
答案 1 :(得分:0)
因为您最有可能静态引用程序集,所以需要两个版本的应用程序 - 一个编译为x86,另一个编译为x64。
我不是特别了解Sqllite驱动程序,但通常使用x86版本的驱动程序就足够了,这仍然可以通过WOW32仿真机制在x64系统上运行。这意味着您只需编译一个版本(x86)即可安装到x86和x64系统上(如previous question上的Mark Hall所述)。如果要使用x64特定功能(如更大的数据类型,更多可用的RAM等),则只需编译x64。