2011-12-19 20 views
0

我知道.NET 2.0版本是爲了兼容性目的而提供的。但爲什麼一些圖書館有兩個版本?是否有任何理由發佈一個.NET 4.0版本的庫?提供.NET 2.0和.NET 4.0二進制文件時,使用後者有什麼優勢?

採取例如Oracle.DataAccess庫。

+0

如果您打算在後一版本中使用特定的功能......當然。 (此外,舊程序集可能不會更新,因此包含在較新程序集中解決的錯誤) – Polity 2011-12-19 11:43:25

回答

3

一般而言,目標框架的新版本庫的版本提供需要的框架的新版本才能正常工作的新功能。 .NET 4.0中引入了許多新的好東西,這些好東西在.NET 2.0中不存在。

開發人員喜歡用最新的框架內工作,所以所有的新代碼將實現目標這一框架。針對舊版本框架的較早版本僅出於兼容性原因而提供,因爲它可能僅提供最低限度必需的功能子集。

另一種可能性是較新的框架爲庫代碼提供了性能或其他改進。那些[有時]可以被回溯到框架的早期版本,但它們通常是非優化的實現,因此只能在絕對必要時才使用。

+0

通常他們將以利用.NET新版本的語言功能的方式公開他們的API – 2012-09-06 05:43:05

+0

並且在案例從.NET 2.0/3.0/3.5遷移到.NET 4.0的時間有一個新的運行時間,它可能只是它們已經將它們的DLL重新定位到.NET 4.0並重新編譯它 – 2012-09-06 05:44:32

3

採取例如Oracle.DataAccess庫。

這將是一個很好的混合模式的例子。用C++/CLI編寫,包含託管類包裝器的本地代碼。數據庫提供者通常需要使用本地API來與數據庫服務器進行通信。 Oracle的情況當然是這樣。

在面向.NET 4.0的程序中使用.NET 2.0版本的這種程序集是一個問題。他們需要一個具有屬性的.exe.config文件來說服CLR,在4.0版的CLR上執行這樣的程序集是可行的,即使它要求2.0。沒有該屬性會產生令人討厭的啓動錯誤。文檔is here

太痛苦了。簡單的解決方案是隻提供一個單獨的.NET 4.0版本的這種程序集。

相關問題