2010-07-27 3 views
4

У меня есть проект, который может быть развернут только на сервере под управлением .NET 3.0. Я отчаянно хочу использовать LINQ, чтобы упростить какую-то мучительную утомительную логику. Есть ли простой способ сделать это? Я соглашусь на любой синтаксис.Есть ли способ использовать синтаксис запроса LINQ с проектами .NET 3.0?

спасибо

ответ

2

С .NET 2.0 до 3.5 все запущены на CLR 2.0, все материалы LINQ - это всего лишь куча библиотек. Если вы включите библиотеки DLL, отсутствующие в вашей версии фреймворка, все будет работать нормально.

Как говорит Патрик, ключевыми 3.5 DLL являются System.Core.dll (которые предоставили System.Linq) и System.Data.Linq.dll (для Linq-to-SQL).

Если вы сделаете это, я думаю, вам нужно System.dll, по крайней мере, .NET 2.0SP1, я считаю.

LINQBridge, как цитирует Марк, работает путем повторной реализации функциональных возможностей, но только для Linq-to-Objects, на которые я верю.

Другой вариант - использовать эти же DLL (System.Core.dll и System.Data.Linq.dll) из проекта Mono. Они перепроверили все LINQ. Материал Linq-to-Sql, возможно, немного незрелый, но он имеет достоинство работы с другими базами данных, а не только с MSSQL.

http://mono-project.com/Main_Page

Это устраняет любой вопрос о законности распространения библиотеки DLL Microsoft с приложением.

+0

Когда я говорю, что Mono реализовала все LINQ, я имею в виду, что он поддерживает Linq-to-Objects, Linq-to-XML и Linq-to-Sql (через проект DBLinq). Последняя версия Mono (по состоянию на июль 2010 года) составляет 2,6,7, и именно там я получаю сборки. – Justin

+0

Это лучший ответ в вопросе до сих пор! –

+1

О, я должен добавить, что вам также нужен файл System.Xml.Linq.dll, если вы хотите сделать Linq-to-XML. Патрик обманул меня своими силами джедаев. – Justin

2

Коллега использовали LINQBridge и имел успех.

+0

wauw nice tool, проверит это – Nealv

+0

Я думаю, что ответ Джастина лучше (ссылка на библиотеки Mono). Если бы это был я, мне бы очень хотелось иметь LINQ для XML. Кроме того, сообщество Mono является большим и активным, тогда как это реализуется только одним человеком, и я даже не могу сказать, поддерживается ли он. Лицензия MIT на библиотеки также делает ее пригодной для использования в большинстве корпоративных сценариев. –

+0

Так почему я получил -1? Потому что вам понравился другой ответ лучше? – Marc

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. Это предотвратит компиляцию ошибок.

Я пробовал это, и это сработало, но остерегайтесь осторожности Майка Атласа о юридических последствиях развертывания этих 2 файлов.

+0

Интересно, приятно найти. – Marc

+0

Это приводит к возникновению юридических проблем с перераспределением библиотек Microsoft. Будьте осторожны. –

+0

На самом деле это не работает для меня. Visual Studio удаляет DLL System.Core и System.Data.Linq после изменения целевой структуры с 3.5 до 3.0 –