.NET Framework 中的應用程式相容性

相容性是每個 .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 的重定目標變更) 中,個別項目會依預期的影響分類,如下所示:

Major
影響大量應用程式或需要大幅修改程式碼的重大變更。

Minor
影響少量應用程式或需要稍微修改程式碼的變更。

邊緣案例
在非常特定 (罕見) 的情況下影響應用程式的變更。

透明
此變更對應用程式的開發人員或使用者的影響不明顯。 發生此變更的應用程式應該不需要修改。

另請參閱