相容性是每個 .NET Framework 版本的重要目標。 相容性確保每個版本具有累加性,因此舊版會繼續運作。 另一方面,先前功能的變更(例如,為了改善效能、解決安全性問題或修正錯誤),可能會導致現有程式代碼或舊版下執行的現有應用程式發生相容性問題。
每個應用程式都會以特定版本的 .NET Framework 為目標:
- 在 Visual Studio 中定義目標架構。
- 在項目檔中指定目標架構。
- 將 TargetFrameworkAttribute 套用至原始程式碼。
從一個 .NET Framework 版本移轉至另一個版本時,需要考慮兩種類型的變更:
執行階段變更
運行時間問題是當新的運行時間放在機器上且應用程式的行為變更時所發生的問題。 在比目標版本還新的版本上執行時,.NET Framework 會使用 古怪 的行為來模擬較舊的目標版本。 應用程式會在較新版本上執行,但就像是在舊版上執行一樣。 許多 .NET Framework 版本之間的相容性問題會透過這個古怪的模型來減輕。 例如,如果已針對 .NET Framework 4.0 編譯二進位檔,但在具有 .NET Framework 4.5 或更新版本的計算機上執行,則會以 .NET Framework 4.0 兼容性模式執行。 這表示較新版本中的許多變更不會影響二進位檔。
應用程式所鎖定的 .NET Framework 版本,是由程式碼執行的應用程式域的入口組件的目標版本所決定。 載入到該應用程式網域中的所有額外的元件都會指向該版本。 例如,在可執行檔的情況下,可執行檔所針對的版本是該應用程式網域中運行的所有元件的相容模式。
重定目標變更
目標重新指定的變更是指在組件重新編譯以設定較新版本為目標時所發生的更新。 將目標設為較新版本表示該組件選擇採用新功能,同時需要考慮舊功能的潛在相容性問題。
影響分類
在描述執行階段和重定目標變更的文章中,例如,將移轉至 .NET Framework 4.8.x 的重定目標變更,各項目根據預期影響進行分類,其預期影響如下:
主要
影響大量應用程式或需要大量修改程序代碼的重大變更。
次要
影響少量應用程式或需要稍微修改程式碼的變更。
極端案例
不常見而是非常特定情境下,影響應用程式的變更。
透明
對應用程式的開發人員或用戶沒有明顯影響的變更。 因為這項變更,應用程式不應該需要修改。