2008-09-28 80 views

回答

19

请注意第三方COM库或第三方.NET库的秘密进行win32调用。那是我们最令我们头疼的地方。

1

x64将允许您访问更多的内存,但给定相同的代码,它将使用比x86更多的内存。

11

MSDN doco,其它考虑因素:

在许多情况下,组件将运行在32位或64位CLR相同。某些原因当由64位CLR运行的程序不同的行为包括:

  • 包含根据平台上 变化大小部件, 如任何指针类型的Structs。

  • 指针算术,包括 常量大小。

  • 不正确的平台调用或COM 声明使用Int32代替 句柄而不是IntPtr。

  • 铸造的IntPtr来的Int32

此外,默认文件位置。

9

这篇文章有很多很好的问题需要注意: 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”。吮吸太多。

2
  • 读取和写入64位值不是线程32位平台上的安全。读取64位值需要两个操作,这些操作可能会被上下文切换中断。有关更多信息,请参阅有关Threading.Interlocked.Read的MSDN文章。

  • 还完全同意torialanswers!:-)

0

以我的经验移植的Asp.NET应用程序基本上完美无瑕。在32位机器和64位上运行,没有问题发生,除了有更多的内存可用。发生这种情况是因为很多已经提到的问题(注册表,线程等)都由Asp.NET管理,您需要将它们正确地修复以在Asp.NET环境中运行。正如已经指出的那样,如果您使用了一些“不安全”的API来获取特殊文件夹或注册表访问权限,则可能会发生一些问题。

Regards Massimo

相关问题