2010-07-27 81 views

回答

2

由於.NET 2.0到3.5都運行在CLR 2.0上,所有的LINQ的東西都只是一堆庫。如果你在你的框架版本中包含缺少的DLL,它將工作得很好。

正如Patrick所說,關鍵的3.5個DLL是System.Core.dll(它提供了System.Linq)和System.Data.Linq.dll(用於Linq到SQL)。

如果你這樣做,我認爲你需要至少.NET 2.0SP1 System.dll我相信。

正如Marc所引用的,LINQBridge的工作原理是重新實現功能,但僅限於我相信的Linq-to-Objects。

另一種選擇是使用Mono項目中的這些相同的DLL(System.Core.dll和System.Data.Linq.dll)。他們重新實現了所有的LINQ。 Linq-to-Sql的東西可能有點不成熟,但它具有與其他數據庫一起工作的優點,而不僅僅是MSSQL。

http://mono-project.com/Main_Page

這消除了與您的應用程序分發微軟的DLL的合法性的任何問題。

+0

當我說Mono已經實現了所有的LINQ時,我的意思是它支持Linq-to-Objects,Linq-to-XML和Linq-to-Sql(通過DBLinq項目)。最新版本的Mono(截至2010年7月)是2.6.7,這是我得到程序集的地方。 – Justin 2010-07-27 22:31:56

+0

這是迄今爲止問題中的最佳答案! – 2010-07-27 22:48:16

+1

哦,我應該補充說,如果你想做Linq-to-XML,你還需要System.Xml.Linq.dll。帕特里克用他的絕地權力欺騙了我。 – Justin 2010-07-28 05:45:03

2

的同事,使用LINQBridge並取得了成功。

+0

wauw漂亮的工具,將檢查出 – Nealv 2010-07-27 21:57:10

+0

我認爲@賈斯汀的答案是更好的(引用單聲道庫) - 如果是我,我真的很想有LINQ to XML。另外,Mono社區很大而且活躍,而這只是由一個人實施的,我甚至不知道它是否被維護。 MIT圖書館的許可證也使其適用於大多數企業情況。 – 2010-07-27 22:46:54

+0

那麼爲什麼我得到-1?因爲你更喜歡另一個答案嗎? – Marc 2010-07-28 02:07:35

2

http://codebeat.wordpress.com/2008/06/23/using-linq-in-net-30/摘自:

  1. 首先,配置使用LINQ到.NET 3.0項目的目標框架。 .NET 3.5引用將被刪除。
  2. 然後,複製System.Data.Linq.dll和System.Core.dll在解決方案中,無論你喜歡(在我的情況下,根文件夾)。
  3. 將它們作爲參考添加到所有相應的項目中。 Visual Studio會警告程序集需要更高版本的框架。按是。
  4. 將引用的SpecificVersion屬性設置爲true。這將防止編譯錯誤。

我試過了,它工作,但要小心Mike Atlas對部署這兩個文件的法律後果的警告。

+0

有趣,不錯的發現。 – Marc 2010-07-27 22:11:16

+0

實際上,這引發了重新分配微軟圖書館的法律問題。小心這樣做。 – 2010-07-27 22:47:36

+0

這一個實際上不適合我。將目標框架從3.5更改爲3.0後,Visual Studio將刪除System.Core和System.Data.Linq dlls – 2010-07-28 13:56:01

相關問題