對於任何VS項目,都可以在該項目的構建屬性中設置平臺目標。您可以將其設置爲任何CPU,x86,x64或Itanium。我的問題是,如果我將這個值設置爲x86,這是否意味着我無法在x64機器上運行該項目?如果是這樣,爲什麼這甚至被使用?只是總是使用任何CPU不是更好嗎?爲Visual Studio應用程序設置平臺目標的目的是什麼?
回答
如果我將此值設置爲x86是否意味着我無法在x64機器上運行該項目?
不,32位應用程序(x86)在64位Windows(x64)上運行良好。所有64位版本的Windows都包含一個稱爲Windows(Windows)64(WOW64)的32位兼容層。實際上,這是通常是,因爲大多數應用程序不會從64位編譯中受益。
但是,編譯64位(x64)確實表示您的應用程序無法在32位(x86)計算機上運行。你可以去倒退(64位可以運行32位),但你不能去轉發(32位不能運行64位)。
正如你指出的那樣,編譯Any CPU
總是一個選項。這將允許應用程序在32位機器上作爲32位應用程序(x86)運行,並在64位機器上作爲64位應用程序(x64)運行。這聽起來像是靈丹妙藥,但也有成本。最值得注意的是,您需要在這兩個 32位和64位環境中廣泛地測試您的應用程序,而如果您僅針對32位環境(包括64位主機上的32位環境),則僅限於必須測試一個版本。額外的工作負載很少值得 - 大多數業務應用程序不會從64位環境的額外內存空間中受益,並且可能最終由於64位指針的開銷增加而擊敗任何潛在收益。
Visual Studio本身就是完全32位應用程序的一個很好的例子。沒有64位版本,但它在64位主機上運行良好。 This blog post有助於闡明爲什麼決定保持VS 32位。你可能會發現推理有助於你自己做出決定。同樣,儘管微軟Office現在可以使用64位軟件包,但微軟仍然建議的大多數客戶堅持使用32位版本。 64位版本存在兼容性問題,並沒有太大的好處。
如果您沒有指定32位平臺,則Microsoft應用程序兼容性工具包無法確定該應用程序爲32位,並且不允許您創建32位解決方案文件,以允許應用程序在用戶帳戶控制時無需管理員憑據即可運行已啓用
- 1. 爲Visual Studio 2015安裝程序項目選擇目標平臺
- 2. 爲我的Visual Studio C++項目配置目標平臺
- 3. 爲什麼Visual Studio x86中的WPF應用程序的默認平臺目標不是AnyCPU?
- 4. Visual Studio Community - 禁用目標平臺「iOS」
- 5. 什麼是Visual Studio的Web部署「標記爲目標上的IIS應用程序」是什麼意思?
- 6. Windows應用程序平臺和目標平臺的區別
- 7. 爲什麼我的項目屬性目標設備不同意目標平臺?
- 8. 設置爲多平臺應用程序
- 9. 發佈配置文件中的Visual Studio數據庫項目目標平臺
- 10. AppDomain.CurrentDomain.BaseDirectory根據應用程序的目標平臺而改變
- 11. Visual Studio:如何爲包含32位和64位平臺的項目設置Qt?
- 12. 在android應用程序中設置最小堆大小的目標是什麼?
- 13. 什麼是在Visual Studio 2008中的ASP.NET Web應用程序項目中設置本地化的最佳實踐
- 14. Visual Studio - .EXE控制檯應用程序的設置版本號
- 15. Visual Studio 2015將目標平臺更改爲Windows 7
- 16. 使用Visual Studio的Windows 7中的跨平臺應用程序
- 17. 如何更改Visual Studio 2010上的目標平臺
- 18. 更改Visual Studio 2008 Express的目標平臺
- 19. 明確設置目標平臺時未構建的新項目
- 20. Visual Studio 2008中的多個Web應用程序部署目標?
- 21. visual studio/installshield設置項目
- 22. visual-studio項目設置
- 23. Visual Studio設置項目
- 24. Visual Studio的流星幫助程序代碼:什麼是流星項目目錄
- 25. 如何在Visual Studio 2010中將項目輸出平臺設置爲x86
- 26. Visual Studio 2012應用程序設置
- 27. Visual Studio - 應用程序設置
- 28. 重置Visual Studio C++項目的設置
- 29. 按平臺/配置更改Visual Studio 2008項目配置
- 30. 在VS 2015中推薦什麼,Windows XP是目標平臺
「大多數應用程序不受益於64位編譯」。這是個謊言。 WOW64層具有與之相關的內在開銷,更有效地佈置堆並且ASLR保護機制具有更多的熵位以保護您的應用程序在64位上。 – SecurityMatt
我沒有說沒有好處。我說過,至少在這一點上,缺點基本上「沖淡」了優勢。這將是幾年內可能會發生變化的事情之一,我不會記得回頭更新我的答案。 –
你們的評論非常有見地。這就是StackOverflow的全部內容。謝謝。 –