如果.NET程序直接或间接地需要调用依赖于平台的/本机/非managed代码,它可能会崩溃。
当我买了一台安装了Windows764位的新笔记本,并尝试使用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世界中生存的最佳实践或指导方针。
我喜欢每个“答案”都有一个问题/技巧,这样它就可以很容易地被注释/更新/引用。-请随意给出几个“答案”。
我也会分享我自己的知识来回答这个问题。
发布于 2010-12-25 17:14:25
当涉及到本机代码时,提供额外的"x86 only“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应用程序。
x86发行版具有尽可能多的“任何CPU”DLL,除了主EXE和特定于CPU的DLL。
对于不能运行x86代码的机器或需要巨大内存的机器,您可以提供额外的"any-CPU“EXE版本。此版本需要进行充分的安装,以确保使用了正确的平台特定代码。
Visual Studio 2010 How to: Configure Projects to Target Platforms介绍了如何将平台设置为x64。以同样的方式,您可以针对x86。
https://stackoverflow.com/questions/4529843
复制相似问题