2010-07-27 83 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

相关问题