我相信架構類型(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參考?