.NET,"任何CPU/64位(x64)/ 32位(x86)"最佳实践,提示和技巧

k3b*_*k3b 8 .net sample 32bit-64bit

如果.NET程序直接或间接需要调用平台相关/本机/非托管代码,它可能会崩溃.

在我购买了安装了Windows 7 64位的新笔记本电脑并尝试使用SQLite数据库进行开发之后,我想到了这个32位/ 64位主题.

System.Data.SQLite包含托管代码和非托管代码.有一个32位版本和一个64位,都有相同的文件名但不同的大小,你的EXE必须使用正确的.

为了使它更复杂:我的Visual Studio 2010调试器是一个32位应用程序,所以当使用GAC的 "System.Data.SQLite-64bit"时我无法调试!

作为.NET开发人员,我们需要指南/技术诀窍/最佳实践.

收集此类信息的最佳位置是我所知道的这个网站(https://stackoverflow.com/).

所以,请分享您的想法和已知问题,这些问题可以作为在32/64/anyCPU dotnet世界中生存的最佳实践或指南.

我赞成每个"答案"一个问题/技巧,因此可以轻松地评论/更新/引用. - 随意给几个"答案".

我也将分享自己的知识作为这个问题的答案.

k3b*_*k3b 4

当涉及本机代码时,提供额外的“仅限 x86”main.exe 可以让生活变得更轻松

在阅读了anycpu-exes-are-usually-more-trouble-then-re-worth之后,我意识到提供额外的“仅x86”main.exe可以让生活更轻松。

由于 Windows 7 64 位可以执行 x86-32 位应用程序,因此 x86 程序将在大多数 .NET 系统上运行(但不能在非 Intel Mono 系统上运行)。

只要Windows 7 64 位 Visual Studio 2010 调试器是 32 位应用程序,就可以轻松调试 x86 应用程序。

x86 版本具有尽可能多的“任何 CPU”DLL,除了主 EXE 和特定于 CPU 的 DLL 之外。

对于无法运行 x86 代码或需要大内存的机器,您可以提供额外的“任意 CPU”EXE 版本。此版本需要足够的安装以确保使用正确的平台特定代码。

Visual Studio 2010 如何:将项目配置到目标平台介绍了如何将平台设置为 x64。与您可以以 x86 为目标的方式相同。