我相信架构类型(x86 vs x64)是在制作.Net程序时为您抽象出来的,但是有没有其他可能导致问题的注意事项?是否需要考虑在x64和x86上运行.net程序?
回答
请注意第三方COM库或第三方.NET库的秘密进行win32调用。那是我们最令我们头疼的地方。
x64将允许您访问更多的内存,但给定相同的代码,它将使用比x86更多的内存。
从MSDN doco,其它考虑因素:
在许多情况下,组件将运行在32位或64位CLR相同。某些原因当由64位CLR运行的程序不同的行为包括:
包含根据平台上 变化大小部件, 如任何指针类型的Structs。
指针算术,包括 常量大小。
不正确的平台调用或COM 声明使用Int32代替 句柄而不是IntPtr。
铸造的IntPtr来的Int32
此外,默认文件位置。
这篇文章有很多很好的问题需要注意: http://osnews.com/story/20330/Windows_x64_Watch_List
就个人而言,我的老板有一个64位的Vista计算机,我在32位模式程序。我们遇到以下问题:
32位应用程序的注册表被隐藏(排序)到Wow6432Node文件夹中。并非所有用于在注册表中找到路径的应用都将位于该节点中(例如,SQL Server不会)。
C:\ Windows文件夹中的SysWow64可能会导致DLL不在需要它们的位置(我们有第三方许可组件的此问题)。
有时您需要的文件位于“C:\ Program Files(x86)”中,而不是“C:\ Program Files”。吮吸太多。
读取和写入64位值不是线程32位平台上的安全。读取64位值需要两个操作,这些操作可能会被上下文切换中断。有关更多信息,请参阅有关Threading.Interlocked.Read的MSDN文章。
MSDN已经提出了一个关于将32位应用程序移植到64位执行环境的问题的文章。其他
http://msdn.microsoft.com/en-us/library/ms973190.aspx
两个博客以前写的64位开发当他们在CLR团队正在努力
以我的经验移植的Asp.NET应用程序基本上完美无瑕。在32位机器和64位上运行,没有问题发生,除了有更多的内存可用。发生这种情况是因为很多已经提到的问题(注册表,线程等)都由Asp.NET管理,您需要将它们正确地修复以在Asp.NET环境中运行。正如已经指出的那样,如果您使用了一些“不安全”的API来获取特殊文件夹或注册表访问权限,则可能会发生一些问题。
Regards Massimo
- 1. Linux编译简单程序以在x86和x64上运行
- 2. .NET项目需要在x64和x86下构建吗?
- 3. 如何在.NET中分辨您是在x86还是在x64上运行?
- 4. 如何确定我的应用程序是在x86还是x64 Windows上运行?
- 5. 在VS2008中调试Windows x64上的x86 .NET应用程序
- 6. Grails是否需要在tomcat上运行应用程序?
- 7. .net核心控制台以x64系统上的x86运行
- 8. 确定是否在MATLAB中运行x64或x86操作系统
- 9. 安装x86和x64 VC++ 10运行时?
- 10. 是否需要Visual Studio在.net源代码上运行Fortify?
- 11. 在x64上运行的.NET软件,但在x86上编译的任何CPU(VS2008)
- 12. .NET框架是否需要运行面向.NET的VC++应用程序?
- 13. MySQL的查询需要序列考虑
- 14. IIS是否为Azure云服务运行x64或x86?
- 15. 针对x86和x64的安装程序?
- 16. 是什么x86和x64
- 17. RXTX x64和x86
- 18. 从x64 .NET访问x86 COM1
- 19. x86和x64有不同的.net CLR吗?
- 20. .NET Core应用程序是否需要在目标机器上安装.NET运行时?
- 21. 作为x86或x64运行的应用程序?
- 22. x86上的Mono mkbundle的构建将无法在x64上运行
- 23. 阅读文件时,我是否需要考虑单一编码?
- 24. x64程序可以访问Windows x64上的x86 COM对象吗?
- 25. 在x86程序集中复制x64 MOVQ
- 26. .Net Reactive Extensions Framework(Rx)是否考虑了拓扑顺序?
- 27. 平台目标(x86/x64/AnyCPU)对于纯托管.NET dll是否重要?
- 28. 用Mono构建的应用程序是否在.NET上运行?
- 29. .net应用程序是否在Linux上运行?
- 30. 是否需要System.Web.Silverlight参考?