我有一個應用程序,其中包含Platform作爲任何CPU的項目。當在VS2008的64位機器(win7)上運行應用程序時,我可以在任務管理器進程中看到* 32,這意味着它在32位模式下運行。但是我已經閱讀了這個應用程序,並將Platform as Any作爲任何CPU根據機器運行(在我的情況下是64位)。我都很困惑。請解釋。在64位機器上運行32位.NET應用程序
回答
由於VS2008是32位,我希望它也可以啓動一個32位的過程。另一個原因可能是你引用了32位的DLLs?
您是否嘗試過在VS2008之外運行應用程序 - 它仍處於32位模式?
- 去蓋=>配置管理器
- 單擊活動解決方案平臺下拉列表中選擇。
- 在輸入或選擇新平臺下拉列表中,選擇'x64'。
- 點擊確定。
任何CPU都一樣好 - 它應該在64位系統上以64位模式運行應用程序,在32位系統上以32位模式運行應用程序。除非你引用強制應用程序進入32位模式的東西。只有64位才能防止它在32位系統上運行。 –
@Mayur我做了你說的,但選擇了x86。我的應用程序現在可以在使用vs2008訪問32位dsn的64位機器上成功運行。我的問題是,我必須手動爲所有應用程序執行此操作才能工作?什麼是通用解決方案? – nishantv
專門爲X86編譯的應用程序無法以64位模式運行 - 這裏一定有些混淆...... –
您確定創建實際可執行文件的項目設置爲AnyCPU
而不是x86
?該項目以及所有參考項目應設置爲AnyCPU
。如果你這樣做,這個進程將在64位Windows上以64位進程運行(並且在32位Windows上以32位進程運行)。
這是.EXE項目的平臺目標,它決定了應用程序的「比特位」。如果任何引用的.DLL項目具有與正在運行的應用程序的「位」不兼容的「位」,您將收到運行時錯誤。例如。如果AnyCPU
.EXE項目引用x86
.DLL項目,它將成功地在32位Windows上運行,但在64位Windows上失敗並顯示運行時錯誤。
的問題是有關Visual Studio 2008,但是的Visual Studio 2012和.NET 4.5引入了anycpu32bitpreferred setting:
anycpu32bitpreferred編譯您的組件在任何平臺上運行。您的應用程序在支持64位和32位應用程序的系統上以32位模式運行。您只能爲面向.NET Framework 4.5的項目指定此選項。
上(在Visual Studio中默認值)車削該設置意味着AnyCPU
應用程序將執行32位甚至在64位操作系統。
所有項目都設置爲AnyCPU以及.EXE項目的平臺目標。但是我的應用程序在32位模式下運行,如任務管理器中所示。另外,如上所述,它的失敗是因爲它無法在運行時訪問IBM DB2 Server Client的32位DSN。 – nishantv
@nishantv:文檔位於:http://msdn.microsoft.com/en-us/library/zekwfyz4.aspx。看起來,無論是文檔都是錯誤的,我們有一些事情是你忽視的。 –
- 1. 在XP,Vista,Windows7 ... 32和64位上運行.Net應用程序
- 2. 在Win 7 64位機器上運行32位編譯Visual Foxpro應用程序
- 3. 在64位機器上編譯32位matlab應用程序(C++)
- 4. 32位應用程序如何在64位Mac上運行?
- 5. 試圖在64位Windows客戶端上運行32位.NET應用程序
- 6. 在64位機器上編譯32位應用程序以獲得64位應用程序
- 7. 如何找出爲什麼.NET應用程序在64位機器上以32位運行
- 8. 如何啓用32位.Net應用程序運行在Windows 2012 R2 64位
- 9. 在64位機器上生成32位
- 10. 將32位Web應用程序作爲WOW64在64位服務器上運行?
- 11. Microsoft SharePoint的64位DLL正在32位機器上運行
- 12. 防止在64位機器上運行32位安裝項目
- 13. 在64位機器上運行32位二進制
- 14. 在java中的64位機器上運行32位dll
- 15. 我可以在32位機器上運行64位dll嗎?
- 16. 64位在32位機器上運行的組件COM +導出
- 17. 32位代碼在64位Linux機器上運行
- 18. 如何在64位linux機器上運行32位matlab?
- 19. 在32位或64位matlab上運行?
- 20. 在64位機器上運行應用程序(啓動時)
- 21. 調試器不會在64位機器上部署32位應用程序
- 22. 在kernelbase.dll中隨機崩潰.net應用程序,在Windows 7上運行32位64位
- 23. 64位服務器2003上的32位Web應用程序未運行
- 24. 32位.NET應用程序和64位.NET應用程序有區別嗎?
- 25. 需要獲取程序文件的文件夾,在64位機器上運行32位應用程序?
- 26. 在64位和32位系統上運行程序
- 27. WiX:阻止32位安裝程序在64位Windows上運行
- 28. 如何運行64位機器上的32位API?
- 29. 在64位機器上使用Visual Studio編譯32位應用程序
- 30. 32位/ 64位Windows/Linux應用程序
是的,所有的DLL也是32位。我也在訪問IBM Data Server客戶端v9.5.3,但是我收到「無法找到或加載註冊的.Net Framework數據提供程序」。我試圖解決這個問題,我認爲這是由於32位64位衝突。關於這個 – nishantv
你有什麼想法嗎?如果你引用的是32位的DLL(不是AnyCPU或X64),那麼應用程序將以32位模式運行,因爲你不能在64位中使用32位DLL位應用程序,反之亦然。 –