從舊版 Visual Studio 升級C++專案
若要升級在舊版Visual Studio中建立的專案,只要在最新版本的Visual Studio中開啟專案即可。 Visual Studio 提供將項目升級至目前的架構。
如果您選擇 [否],則專案不會升級。 針對在 Visual Studio 2010 和更新版本中建立的專案,您仍然可以在較新版本的 Visual Studio 中使用專案。 只要設定您的項目屬性,即可繼續以較舊的工具組為目標。 如果您在計算機上保留舊版的 Visual Studio,其工具組可在更新版本中使用。 例如,如果您的項目必須繼續在 Windows XP 上執行,您可以升級至 Visual Studio 2019。 接著,您會在項目屬性中將工具組指定為v141_xp或更早版本。 如需詳細資訊,請參閱在 Visual Studio 中使用原生多目標來建置舊專案。
如果您選擇 [ 是],則專案會就地升級。 無法轉換回舊版。 在升級案例中,這就是為什麼最好建立現有專案和方案檔的備份複本。
注意
Visual Studio 2022 已過時支持升級具有 .dsw
或 .dsp
延伸模組的項目類型。 您可以使用舊版 Visual Studio,例如 Visual Studio 2019 升級這些專案,然後在 Visual Studio 2022 中升級這些專案,以使用 Visual Studio 的最新工具和功能。
升級報表
當您升級專案時,您會取得升級報告。 報表也會儲存在項目資料夾中,作為UpgradeLog.htm。 升級報告會顯示轉換期間發現問題的摘要。 其中列出已進行的一些變更相關信息,包括:
項目屬性。
包含檔案。
由於編譯程式一致性改善或標準中的變更,不再完全編譯的程序代碼。
依賴 Visual Studio 或 Windows 功能的程式代碼已無法使用。 或者,未包含在 Visual Studio 預設安裝中的頭檔,或已從產品中移除。
因為 API 中的變更,例如已重新命名的 API、已變更的函式簽章或已取代的函式,因此不再編譯的程式代碼。
因為診斷中的變更而不再編譯的程序代碼,例如警告變成錯誤
鏈接器錯誤,因為連結庫已變更,特別是使用 /NODEFAULTLIB 時。
由於行為變更,運行時間錯誤或非預期的結果。
工具中引進的錯誤。 如果您發現問題,請透過一般支援通道或使用Visual Studio C++ 開發人員社群 頁面,向Visual C++ 小組回報。
某些升級的專案和解決方案可以順利建置,而不需要修改。 不過,大部分的專案都可能需要變更專案設定和原始程式碼。 修正這些問題沒有單一正確方法,但我們建議使用階段式方法。 開始之前,請檢閱 潛在升級問題 概觀,以取得許多常見錯誤類型的詳細資訊。
將 Platform Toolset、C++ Language Standard 和 Windows SDK 版本設定為慣用版本。 (項目>屬性組態屬性>>一般)
如果您有許多錯誤,您可以在修正時暫時關閉一些選項。 若要關閉
/permissive-
選項,請使用專案>屬性組態屬性>>C/C++>Language。 若要關閉程式代碼分析選項,請使用 [項目>屬性組態屬性>>程式代碼分析]。請確定所有相依性都存在,且包含路徑或連結庫位置正確。 (專案>屬性組態屬性>>VC++ 目錄)
識別並修正不再存在之 API 參考所造成的錯誤。
修正任何防止編譯的剩餘錯誤。 如需常見錯誤的修正,請參閱潛在升級問題的概觀。
請重新開啟
/permissive-
並修正任何由先前在 MSVC 中編譯之不符合規範程式代碼所造成的新錯誤。開啟程式代碼分析,以識別不再被視為可接受的潛在問題或過時的程式代碼模式。 如果程式代碼分析標幟許多錯誤,您可以關閉一些警告,先將焦點放在最重要的警告上。 IDE 可協助解決某些種類的問題快速修正。
請考慮將程式代碼現代化的其他機會。 例如,將自定義數據結構和演算法取代為來自 C++ 標準連結庫或 Boost 開放原始碼連結庫的自定義數據結構和演算法。 藉由使用標準功能,您可以讓其他人更輕鬆地維護程序代碼。 您可以確信,此程式代碼已經過許多標準委員會專家和更廣泛的C++社群測試及審查。
如需難以修正的錯誤,您可以搜尋解決方案,或在 Microsoft Learn Q&A 上張貼問題。 如需C++編譯程式和工具中的問題,請嘗試C++開發人員社群 網站。
本節內容
潛在升級問題概觀
將程式碼升級至通用 CRT
更新 WINVER 和 _WIN32_WINNT
修正程式庫內部項目上的相依性
浮點數的移轉問題
Visual Studio 中已淘汰C++功能
VCBuild 與 MSBuild
埠第三方連結庫
另請參閱
Visual Studio 之 Visual C++ 的新功能
Visual C++ 變更歷程記錄 2003 - 2015
非標準行為
移植資料應用程式