相容性 指能在與原本開發程序代碼不同版本的 .NET 實作上編譯或執行程序代碼的能力。 特定變更可能會以六種不同的方式影響相容性:
行為變更
行為變更代表成員行為的變更。 變更可能是外部可見的(例如,方法可能會擲回不同的例外狀況),或者它可能代表已變更的實作(例如,計算傳回值的方式變更、加入或移除內部方法呼叫,甚至大幅改善效能)。
當行為變更在外部可見並修改類型的公用合約時,它們很容易評估,因為它們會影響二進位相容性。 實作變更更難評估;視變更的性質和 API 使用的頻率和模式而定,變更的影響可能從嚴重到無害。
二進位相容性
二進位相容性是指 API 取用者在不重新編譯的情況下,在較新版本上使用 API 的能力。 新增方法或將新的介面實作新增至類型等變更不會影響二進位相容性。 不過,移除或變更元件的公用簽章,讓取用者無法再存取元件公開的相同介面會影響二進位相容性。 這種變更稱為 二進位不相容變更。
來源相容性
來源相容性是指 API 現有取用者在不進行任何來源變更的情況下,針對較新版本重新編譯的能力。 當消費者必須修改原始程式碼以便針對較新版本的API成功建置時,就會發生 源碼不相容的變更。
設計時相容性
設計時相容性是指在跨版本的 Visual Studio 和其他設計時環境中保留設計時體驗。 雖然這可能會涉及設計工具的行為或UI,但設計時間相容性最重要的層面則涉及專案相容性。 專案或方案必須能夠在較新版本的設計時間環境中開啟及使用。
回溯相容性
向後相容性是指 API 的現有使用者能夠在新版本中運行,且保持相同行為的能力。 行為變更和二進位相容性的變更都會影響回溯相容性。 如果使用者在針對較新版本的 API 運行時無法運行或行為不同,則 API 是向後不相容。
不建議影響回溯相容性的變更,因為開發人員預期較新版本的 API 具有回溯相容性。
向前相容性
前向相容性是指 API 的現有使用者能夠在舊版本上運行,同時展現出相同的行為。 如果取用者在對舊版 API 執行時無法執行或行為不同,則 API 會 轉送不相容的。
維護向前相容性幾乎排除從版本到版本的任何變更或新增,因為這些變更會防止以較新版本為目標的取用者在舊版下執行。 開發人員預期依賴較新 API 的使用者可能無法正確地與較舊的 API 一同運作。
維護向前相容性不是 .NET Core 的目標。