向下相容性意指為特定平台版本開發的應用程式,能在該平台的後續版本上運行。 .NET Framework 嘗試最大化向下相容性:為某一版本撰寫的原始碼應能在後續版本的 .NET Framework 上編譯,而在同一版本上執行的二進位檔則在後續版本的 .NET Framework 上行為應相同。
應用程式版本相容性
預設情況下,應用程式會運行在其所建置的 .NET Framework 版本上。 如果該版本不存在,且應用程式設定檔未定義支援版本,可能會發生 .NET Framework 初始化錯誤。 在這種情況下,執行應用程式的嘗試將會失敗。
要定義應用程式執行的特定版本,可以在設定檔中加入一個或多個 <supportedRuntime> 元素。 每個 <supportedRuntime> 元素列出支援的執行版本,第一個表示最優先的版本,最後一個則是最不理想的版本。
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
欲了解更多資訊,請參閱 如何配置應用程式以支援 .NET Framework 4 或 4.x。
元件版本相容性
應用程式可以控制它執行的 .NET Framework 版本,但元件卻無法。 元件和類別函式庫是在特定應用程式的情境中載入的,這也是為什麼它們會自動在該應用程式所運行的 .NET Framework 版本上執行。
因此,兼容性保證對於元件來說尤為重要。 從 .NET Framework 4 開始,你可以透過套用 System.Runtime.Versioning.ComponentGuaranteesAttribute 屬性來指定一個元件在多個版本間保持相容性的程度。 工具可利用此屬性偵測元件未來版本中可能違反相容性保證的行為。
回溯相容性
.NET Framework 4.5 及以後版本與使用早期 .NET Framework 建置的應用程式向下相容。 換句話說,使用先前版本開發的應用程式和元件,可以在 .NET Framework 4.5 及更新版本中無需修改即可運作。 然而,預設情況下,應用程式會運行於其開發時所使用的通用語言執行環境版本,因此您可能需要提供設定檔,才能讓您的應用程式能在 .NET Framework 4.5 或更新版本上運行。 更多資訊請參閱本文前方的 「應用程式版本相容性 」章節。
實務上,這種相容性可能會因 .NET Framework 看似無關緊要的變更或程式技術的改變而被破壞。 例如,.NET Framework 4.5 中的效能提升可能會暴露出早期版本未曾發生的競賽條件。 同樣地,使用硬編碼路徑存取 .NET Framework 組件、與特定版本的 .NET Framework 進行等式比較,以及透過反射取得私有欄位的值,這些做法都不向下相容。 此外,每個 .NET Framework 版本都包含可能影響某些應用程式與元件相容性的錯誤修正與安全相關變更。
如果您的應用程式或元件在 .NET Framework 4.5 或更新版本中無法如預期運作,請使用以下檢查清單:
如果您的應用程式是為 .NET Framework 4.0 及其後任何版本開發,請參閱 應用程式相容性,以生成您的目標 .NET Framework 版本與應用程式執行版本之間的變更清單。
如果你有 .NET Framework 3.5 應用程式,也可以參考 .NET Framework 4 的遷移問題。
如果你有 .NET Framework 2.0 應用程式,也可以參考 .NET Framework 3.5 SP1 的變更。
如果你有 .NET Framework 1.1 應用程式,也可以參考 .NET Framework 2.0 的變更。
如果你正在重新編譯現有原始碼以執行 .NET Framework 4.5 或其點版本,或是開發針對 .NET Framework 4.5 或其點釋出的新版本應用程式或元件,請在 類別庫 中查看過時型別和成員。 並套用上述的變通方法。 (先前編譯的程式碼仍會針對已標記為過時的型別與成員執行。)
如果你確定 .NET Framework 4.5 的變更導致應用程式失效,請檢查 執行時設定架構,特別是
<AppContextSwitchOverrides>Element,看看是否可以用應用程式設定檔中的執行時設定來恢復之前的行為。如果你遇到沒有文件化的問題,可以在 .NET 的開發者社群網站 或 Microsoft/dotnet GitHub 倉庫開啟問題。
並行執行
如果你找不到合適的解決方法,請記得 .NET Framework 4.5(或其各版本)與 1.1、2.0 和 3.5 版本並行執行,是取代版本 4 的原地更新。 針對 1.1、2.0 和 3.5 版本的應用程式,你可以在目標機器上安裝相應版本的 .NET Framework,讓應用程式在最佳環境下運行。 欲了解更多並排執行的資訊,請參閱「 並排執行」。