2012-11-20 81 views
1

我正在尋找關於特定版本的.NET框架之間的向前兼容性的可靠建議。.NET框架從3.5到2.0的向前兼容

爲了清楚起見,我們假設我們正在談論有關SQL Server 2008只支持.NET 2.0,併爲我們加載與存儲過程的V3.5組裝,再加上其所有V3.5的依賴。

這些事實如何結合?
是否「CLR是一樣的」事實贏?我們可以說,由於CLR版本在三個FW版本之間是相同的,所以v3.5代碼可以安全地引入到v2.0環境中,前提是它的所有依賴關係也被引入?在這種情況下,我們是否可以將「未支持的前向兼容性」通知視爲在一般情況下是正確的,但在v3.5-v2.0關係的特定情況下不適用?

(我們真正嘗試導入V3.5組件,所有的依賴到SQL Server 2008中它的工作原理,但我想知道它是否工作,因爲它應該,或者是因爲脆弱的魔法。)

回答

4

沒有「.NET 3.5程序集」這樣的東西。打印在程序集上的唯一版本是它需要的運行時版本。對於由.NET 2.0至3.5 SP1所包含的編譯器構建的任何程序集,其v2.0.50727版本均爲v2.0.50727。隨着進一步的扭曲,這確實指定了程序集中元數據的格式。只有CLR版本2或更高版本才能讀取程序集中的清單。這種格式在4.0改變,最核心的原因,你需要CLR版本4來執行目標4.

唯一的區別是框架版本之間2.0到3.5 SP1是在一套組件中包含的組件。當您定位3.0或更高版本時,您只能向WPF PresentationFramework程序集添加程序集引用。目標3.5只能添加System.Core。

避免在SQL項目中使用這些新程序集並不困難。如果你弄錯了,你會得到一個很快的例外。

0

SQL Server加載2.0 CLR,它與3.x兼容。所以,是的,「CLR版本是一樣的」勝利。

+0

你覺得我的想法充滿了模糊性。這裏兼容的意思是什麼?你是怎麼跳到「是」的?我不投棄權票,但希望你能說清楚。 –

1

我覺得你的第一個假設:「SQL Server 2008中只支持.NET 2」是錯誤的,因此,所有下面的討論將毫無意義。

如果您在這篇文章看看,你可以看到,.NET 3.5支持,爲System.Core程序是.NET 3.5只,

http://msdn.microsoft.com/en-us/library/ms403279(v=sql.100).aspx

現在你可以放心地使用你的.NET 3.5組裝。