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

时间:2010-12-25 09:13:15

标签: .net 32bit-64bit sample

如果.NET程序直接或间接需要调用依赖于平台的/ native / un managed代码,它可能会崩溃。

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

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

要使它更复杂:我的Visual Studio 2010 debugger is a 32-bit application,所以当使用GAC中的“System.Data.SQLite-64bit”时我无法调试!

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

收集此类信息的最佳位置是此网站(https://stackoverflow.com/)。

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

我赞成每个“答案”一个问题/技巧 所以它可以很容易地评论/更新/引用。 - 随意给几个“答案”。

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

1 个答案:

答案 0 :(得分:3)

提供额外的“仅x86”main.exe可以在涉及本机代码时更轻松

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

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

只要可以轻松调试Windows 7 64-bit Visual Studio 2010 debugger is a 32-bit application x86应用程序。

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

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

Visual Studio 2010 How to: Configure Projects to Target Platforms介绍了如何将平台设置为x64。与您定位x86的方式相同。