Сборка System.Data.SQLite из исходного кода, сборка с целевой платформой 4.0

Я пытаюсь создать System.Data.SQLite в Visual Studio, используя исходный код, загруженный из

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

Мне удалось создать решение, но когда я попытался сослаться на System.Data.SQLite.dll из проекта с TargetFramework = 3.5, я получил следующее сообщение:

«System.Data.SQLite.dll или одна из его зависимостей требует более поздней версии .NET Framework, чем та, которая указана в проекте».

Я заметил, что все их управляемые проекты (System.Data.SQLite.2010, System.Data.SQLite.Linq.2010 и System.Data.SQLite.Module.2010) были настроены на .NET 4.0. Затем я изменил их все на ссылку 3.5, перестроил и попробовал снова. После этого я смог сослаться на проект, однако получаю новую ошибку времени выполнения:

«Не удалось загрузить файл или сборку 'System.Data.SQLite' или одну из его зависимостей. Эта сборка создана средой выполнения более новой, чем текущая загруженная среда выполнения, и не может быть загружена».

Я открыл .dll с помощью ildasm, и в манифесте действительно написано // Версия метаданных: v4.0.30319 Для меня это не имеет смысла, потому что в их документации четко указано, что он должен работать с .NET 2.0:

". Мы хотим поставлять управляемые двоичные файлы, которые полагаются на .NET Framework 2.0 с пакетом обновления 2 (или для сборки LINQ, .NET Framework 3.5 с пакетом обновления 1). .NET Framework 2.0 очень широко развернута, и на двоичные файлы, созданные для нее, также можно ссылаться и успешно используется в проектах, использующих .NET Framework 4.0 ».

http://system.data.sqlite.org/index.html/doc/trunk/www/build.wiki.

Это решение - своего рода кошмар с множеством целевых файлов и множеством настраиваемых параметров сборки. Я не совсем уверен, где устанавливаются целевые рамки. Я предполагаю, что где-то происходит какое-то волшебство.

Есть ли у кого-нибудь опыт создания этого проекта? Любая помощь будет оценена. Спасибо!


person Adam    schedule 11.11.2011    source источник
comment
Какое загруженное решение вы используете? Вы пытаетесь использовать версию .NET 4.0 с приложением 3.5?   -  person Tim Santeford    schedule 16.11.2011
comment
Единственный код, который я видел для загрузки, находился по адресу system.data .sqlite.org / index.html / doc / trunk / www / downloads.wiki Первая ссылка: system.data.sqlite.org/sqlite-netFx-source-1.0.76.0.zip Я использую SQLite.NET.2010.sln   -  person Adam    schedule 17.11.2011


Ответы (2)


Ключом к созданию решения System.Data.SQLite в Visual Studio 2010, ориентированного на v3.5, является знание того, что проекты VC ++ (SQLite.Interop.2010 и SQLite.Interop.Static) по умолчанию нацелены на версию 4.0 платформы. Хотя вы правильно нацелили версию 3.5 на проекты C # (System.Data.SQLite.2010 и System.Data.SQLite.Linq.2010), вероятно, не было ясно, как изменить целевую версию для проектов VC ++.

Предлагаемый подход Microsoft для изменения версий фреймворка в VC ++ заключается в выгрузке проекта из Visual Studio 2010. Затем откройте текстовый редактор, найдите свой .vcxproj в каталоге решения и вставьте тег TargetFrameworkVersion со значением «v3.5. "в тег" Globals "PropertyGroup. После повторной загрузки проекта в Visual Studio 2010 вы должны увидеть version = 3.5 в разделе Framework and References свойств проекта. Ссылка на ссылку

Для System.Data.SQLite вам придется выполнить эту операцию для обоих проектов VC ++ (SQLite.Interop.2010 и SQLite.Interop.Static). ПРИМЕЧАНИЕ: если вы попытаетесь нацелить проекты VC ++ на версию 3.5 в Visual Studio 2010, вам также потребуется установить Visual Studio 2008 SP1 (VC 9.0). Кроме того, если вы хотите скомпилировать для x64 в VC ++ 2010 на платформе версии 3.5, вам потребуется установить компилятор x64 и инструменты в Visual Studio 2008 SP1 (VC 9.0) (не установлены по умолчанию).

После перекомпиляции ildasm должен показать «Версия метаданных: v2.0.50727» в манифесте для System.Data.SQLite.dll

Я заметил, что после переключения решения VS2010 на версию фреймворка 3.5 в System.Data.SQLite.Linq.2010 появились новые ошибки сборки из-за того, как автор ссылается на ресурсы «Свойства» (например, Resources.resx) в коде. .

person EricKretzer    schedule 19.11.2011

Это может быть вызвано сборкой с использованием VS2010, который, как мне кажется, по умолчанию использует параметр ToolsVersion 4.0. В этот zip-файл включен файл решения MSBuild для VS2008 (который по умолчанию использовал ToolsVersion 3.5). Я подозреваю, что создание этого файла решения с использованием версии .NET 3.5 MSBuild даст вам DLL, совместимую с версией 3.5.

"C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe" ""

person JHunz    schedule 18.11.2011