共用方式為


.NET Framework 類別庫中的 Obsoletions

.NET Framework 會隨著時間而變更。 每個新版本都新增了提供新功能的新類型和類型成員。 現有類型及其成員也會隨著時間而變更。 例如,某些類型因所支援的技術被新技術所取代而變得不那麼重要,而某些方法則被以某種方式優於的較新方法取代。

.NET Framework 和 Common Language Runtime 致力於支援回溯兼容性(允許使用一個 .NET Framework 版本開發的應用程式在下一版 .NET Framework 上執行)。 這會使直接移除類型或類型成員變得困難。 相反地,.NET Framework 表示類型或類型成員不應再使用,方法是將它標示為 過時已被取代。 藉由抹除類型或成員,開發人員知道它會消失,並有時間回應其移除。 不過,使用 型別或成員的現有程式代碼會繼續在新版 .NET 中執行。

備註

在 .NET(Core)中,將 API 標記為過時不一定表示該 API 會被移除。 如需詳細資訊,請參閱 .NET 中的 API 移除

ObsoleteAttribute 屬性

.NET Framework 表示類型或類型成員已過時,方法是使用 ObsoleteAttribute 屬性標記它。 將 屬性套用至類型或成員表示未來版本將會移除類型或成員,而不會中斷使用該成員的已編譯程序代碼。

除了指出類型或類型成員已經過時之外, ObsoleteAttribute 還定義編譯程式如何處理包含該類型或成員的原始程式碼。 編譯程式可以編譯程序代碼,但發出警告訊息,也可以將型別或成員的使用視為錯誤。 在第一個案例中,程式代碼可以成功編譯,但警告訊息表示類型或成員已過時。 在第二個案例中,編譯失敗。

即使編譯產生錯誤而非警告訊息, ObsoleteAttribute 也不會影響運行時間行為。 也就是說,使用類型或成員且已成功編譯的應用程式一律會順利執行。 只嘗試重新編譯使用類型或成員的應用程式失敗。

如何處理過時的類型和成員

當您升級並重新編譯現有程式代碼時,使用於應用程式中產生編譯警告的過時類型或成員是可以接受的。 不過,您應該檢閱編譯程式警告訊息,以判斷是否應該變更應用程式程序代碼。 如果訊息未指向適當的替代方案,您應該執行下列任一動作:

  • 如果可能,請移除類型或成員的使用,以變更您的程序代碼。

    -或-

  • 請檢閱此技術領域的文件,以判斷如何回應棄用。

您可以選擇不要針對更新版本的 .NET Framework 重新編譯現有的程式代碼。 相反地,您可以指定執行現有編譯程式代碼的 .NET Framework 版本。 例如,假設您有一個名為 app1.exe 的應用程式已針對 .NET Framework 3.5 編譯,但您想要讓應用程式對 .NET Framework 4.5 執行。 這需要下列步驟:

  1. 為主要可執行檔建立組態檔,並將它命名為 appName.exe.config,其中 appName 是應用程式可執行檔的名稱。 在我們的範例中,針對名為 app1.exe 的應用程式,您會建立名為 app1.exe.config的組態檔。

  2. 將下列內容新增至組態檔。

    <configuration>
       <startup>
          <supportedRuntime version="v4.0" />
       </startup>
    </configuration>
    

若要以特定版本的 .NET Framework 為目標,請將下列其中一個字串值指派給 version 屬性:

.NET Framework 版本 version 字串
4.8 (包括 4.8.1) v4.0
4.7 (包括 4.7.1 和 4.7.2) v4.0
4.6 (包括 4.6.1 和 4.6.2) v4.0
4.5 (包括 4.5.1 和 4.5.2) v4.0
4 v4.0
3.5 v2.0.50727
2.0 v2.0.50727
1.1 v1.1.4322
1.0 v1.0.3705

.NET Framework 4.5 和更新版本的過時 API

舊版本中已過時的 API

另請參閱