我正在更新我的操作系統到Windows 7 x64,我只有運行32位操作系統的經驗。有沒有人對64位環境有任何不好/好的經驗?在C#開發中可能的64位操作系統問題
僅供參考,我使用的工具是:
- 的Visual Studio 2008
- Tortoise SVN
- TestDriven.Net
- 的Oracle 10g XE
- PL/SQL Developer
- Dundas Chart
- Analys是從MS SQL Server 2008服務
我正在更新我的操作系統到Windows 7 x64,我只有運行32位操作系統的經驗。有沒有人對64位環境有任何不好/好的經驗?在C#開發中可能的64位操作系統問題
僅供參考,我使用的工具是:
運行64位操作系統上有一些副作用,會在某種程度上是顯而易見的。最常見的問題:
在Visual Studio中編輯並繼續將不起作用。您可以通過強制.NET應用程序以32位模式運行來解決此問題。項目+屬性,生成選項卡,平臺目標= x86。解決VS2013。
如果您在.NET應用程序中使用任何ActiveX控件或COM組件,則可能發現程序不再有效,因爲您的計算機沒有相應的64位版本的COM服務器。您會收到錯誤0x80040154,REGDB_E_CLASSNOTREG,「未註冊的類」。與上述相同。
64位調試器不支持混合模式調試,您必須提交到僅託管或僅限本機調試。只要您沒有64位特定問題,就可以像上面一樣修復。解決VS2010。
如果在需要IntPtr的情況下聲明uint或int的P/Invoke聲明寫得不好,將會在64位模式下停止工作。您通常會遇到AccessViolation異常或失敗返回碼。或PInvokeStackImbalance MDA警告。您不應該在查找錯誤時遇到任何問題,只需修改聲明即可。
幾個傳統報廢的Microsoft庫在64位版本中不可用。這是Microsoft Access數據庫最常遇到的問題。與上述相同。
您必須使用正確版本的Regasm.exe來註冊[ComVisible]程序集。根據客戶端程序是以64位還是32位模式運行,從Framework或Framework64中選擇一個。或者,如果你想讓服務器都可用的話。
一些COM類型庫在其方法聲明中包含位相關的參數。 ADO 2.8是一個值得注意的。一定要使用Tlbimp.exe的正確位數來生成正確的COM互操作程序集,Visual Studio不會這樣做。與Regasm.exe相同的方法
32位程序具有與64位程序不同的註冊表視圖。特別是HKCR和HKLM \ Software配置單元是虛擬化的。在Regedit.exe中,32位可見鍵位於HKLM \ Software \ Wow6432Node項下。這會對使用註冊表的程序造成許多微妙的問題。 .NET 4 RegistryKey.OpenBaseKey()允許指定你想要的視圖。
再次對於COM,您將使用Regsvr32.exe的正確位數來註冊非託管COM服務器(不是.NET服務器,它們使用Regasm.exe)。對於64位服務器,使用c:\ windows \ system32中的一個,對於32位服務器使用c:\ windows \ syswow64。
文件系統中的文件夾是虛擬化的,特別是c:\ windows \ system32和c:\ program files。一個32位程序將會看到c:\ windows \ syswow64和c:\ program files(x86)。
安裝人員需要考慮所有上述問題。
我不會擔心太多,如果每個程序都有一個x64下載鏈接,然後使用它。如果沒有,那麼你的代碼將通過WOW64仿真運行。它看起來像你喜歡它正常運行。
請參閱this related question我回答了大約5分鐘前。
WOW64指WINDOWS32上windows64 ,它是一個透明仿真 laywer允許x86程序在x64的操作系統上運行 。如果在x64 Windows操作系統上運行 x86 Windows程序,WOW64將自動使用 。
我正在運行Windows 7 Ultimate x64。
其他我沒有經驗的人。
我使用的大多數軟件與x64沒有任何問題,自XP x64出現問題以來已經有幾年了,而且人們似乎已經趕上了x64。
但是,在x64中進行開發的主要問題是,在Visual Studio中以x64模式運行時,無法在調試時編輯代碼。
您必須使用x86作爲目標平臺才能這樣做。
這是原因的beta對Visual Studio 2010的默認目標平臺而不是X32任何平臺的一個一個...
'regasm'確實花了我很多時間來弄清楚。謝謝! – kizzx2 2010-06-09 17:52:15