2008-09-28 110 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

相關問題