2010-12-08 63 views
2

我創建了一個.DLL目標.Net 4,但現在我正在考慮將它編譯爲.Net 3.0,以便使用Visual Studio 2008的用戶可以使用該DLL。。NET 4和.Net 3.0編譯的.DLL有沒有區別?

。NET 4和.Net 3.0編譯的.DLL有沒有區別?

也就是說,我應該創建兩個DLL(每個框架一個),因爲它最好使用編譯到框架的DLL您的目標?或者我應該只提供一個編譯爲.Net 3.0的版本,並讓VS2010用戶使用該版本,因爲使用編譯爲先前框架的DLL沒有區別?

感謝,

更新: 我本來應該更明確,並已「從需要了必要的框架一旁補充說:」。換句話說,從.Net 4項目引用一個在.Net 3.0中編譯的DLL和在.Net 4中編譯的DLL之間是否有區別?假設他們都使用.Net 3.0語法,你是否通過使用任何一個獲得/失去任何東西?

回答

1

如果你的程序集沒有使用特定於4.0的任何特性,那麼編譯它的3.0版本並將其用於兩者都可能是最簡單的。 (實際上,你可以去一路下跌到2.0版本,如果你的代碼允許的話,作爲框架版本3.0和3.5是2.0各超集)

如果庫做過有不同的版本,不同的代碼;爲了獲得最大的靈活性,您可以爲3.0和4.0版本創建單獨的項目,並且「鏈接」相同的源文件,而不是單獨的副本。如果您需要針對不同的框架編寫不同的代碼,您可以使用預處理器指令。

0

。NET 4和.Net 3.0編譯的.DLL有沒有區別?

是的,有區別。當你爲.NET 4.0編譯一個庫時,它將鏈接到mscorlib, v4.0.0.0,如果目標機器上沒有安裝.NET 4.0,它將無法工作。另一方面,如果你使用.NET 3.5進行編譯,它將鏈接到mscorlib, v2.0.0.0,它可以在安裝了.NET 3.5或更高版本的機器上工作(當然假設這個庫沒有其他特殊的依賴關係)。

+0

更新了問題以澄清問題。 – Manuel 2010-12-08 18:31:18