Share via


.NET Framework 組件的版本對應轉換

在並存執行中,應用程式可能由各種元件組成,而這些元件是使用不同版本的 .NET Framework 所建置。這可能會使元件的相依性產生衝突。例如,假設元件 A 是使用 .NET Framework 1.0 版建置且必須使用 1.0 版的 System.Data 組件;組件 B 是使用 .NET Framework 1.1 版建置,而必須使用 1.1 版的 System.Data 組件。如果組件版本不相容,但是卻同時載入,就有可能導致未知型別擲回例外狀況,甚至造成更嚴重的問題。

應用程式如何決定要使用的 .NET Framework 版本

為了解決這個問題,當應用程式使用的元件是以不同版本的 .NET Framework 建置時,與應用程式關聯的 Runtime 版本便會決定應用程式及其所有元件所要使用的 .NET Framework 組件版本。在前述範例中,如果應用程式是與 .NET Framework 1.1 版關聯,則 System.Data 組件的 1.1 版就會載入並供應用程式使用的所有元件共用。而由元件 A 到 System.Data 組件 1.0 版的參考也會在 Run Time 時升級成參考 1.1 版。

您可以將 <bindingRedirect> 項目加入 Machine.config 或 Web.config 檔案中,以覆寫這個行為。如此應用程式就可以使用更新的組件版本,取代特定應用程式類型的現有組件。例如,如果將來發行了可以支援 SOAP 1.2 版的 System.Web.Service.dll 更新版本,您可能會想讓您的應用程式使用該版本,取代原本以 Runtime 安裝的版本。

您也可以在 ASP.NET 主機組態檔 (Aspnet.config) 中覆寫這個行為。ASP.NET 使用這個檔案來確保 System.Web.dll 和 System.Web.RegularExpressions.dll 的版本永遠都符合應用程式關聯的 Runtime 版本,不論 Web.config 檔案中是否有任何覆寫。

有時您可能想在以舊版建置的應用程式中使用以較新版 ASP.NET 建置的元件。請切記,應用程式使用的 Runtime 版本永遠都是由應用程式所關聯 ASPNET ISAPI 版本決定。如果應用程式被設定成使用舊版的 Runtime,同樣地,元件也會在 Runtime 自動重新導向成使用該版本。在以舊版建置的應用程式中使用以舊版 .NET Framework 建置的元件時,請考慮下列事項:

  • 請確定元件不致於過份使用或依賴新版 .NET Framework 中特有的功能或行為。這些功能有時會導致舊版的 Runtime 發生問題。
  • ASP.NET 使用 IIS 中的指令碼對應,將應用程式建置於 Runtime 版本中。<supportedRuntime><requiredRuntime> 組態項目不適用於 ASP.NET 應用程式。

另外,如果用來建置元件的 Runtime 版本安裝在電腦上,您也可以將應用程式重新設定成使用較新的 Runtime 版本。由於較新版的 .NET Framework已設計成可以回溯相容,因此應用程式不需修改就可以執行。如需設定 ASP.NET 應用程式以使用特定 Runtime 版本的詳細資訊,請參閱針對 ASP.NET 版本設定 ASP.NET 應用程式

請參閱

ASP.NET 中的並存支援 | <bindingRedirect>