Невозможно использовать System.IO.Compression и SQLite, на которые есть ссылки в проекте WP8.1.

У меня странная ошибка в моем проекте Windows Phone 8.1 Silverlight. Я только что создал небольшой тестовый проект и получаю такое же поведение:

Если я устанавливаю "Microsoft.Bcl.Compression"

а затем "SQLite.Net.Platform.WindowsPhone8"

через NuGet я получаю следующее исключение, если пытаюсь сжать файл, даже если я вообще не использую SQLite.NET ни в одной строке.

В следующем коде в entry.Open():

var entry = archive.CreateEntry(Path.GetFileName(file.Name));

using (var entryStream = entry.Open())

Исключение типа «System.IO.Compression.ZLibException» возникло в mscorlib.ni.dll, но не было обработано в пользовательском коде.

Дополнительная информация: базовая процедура сжатия не может быть загружена правильно.

Если я удаляю SQLite из проекта, сжатие выполняется успешно, как и ожидалось.

Я использовал сжатие несколько месяцев без проблем, а затем добавил поддержку SQLite.NET и теперь оказался в странном исключении.

Я делаю что-то не так?

Небольшой тестовый проект: CompressionAndSQLiteExample.zip


person waldemarhuber    schedule 23.02.2015    source источник


Ответы (1)


Проблема со сценарием Microsoft.Bcl.Compression.targets заключается в том, что он использует то же целевое имя, что и sqlite-net-wp8, InjectReference.

Я изменил InjectReference на BCLCompressionInjectReference и перезагрузил проект, и теперь он работает нормально.

person Ryan    schedule 24.02.2015
comment
Большое спасибо! Это действительно решило мою проблему! Я только что внес описанные вами изменения в файл \packages\Microsoft.Bcl.Compression.3.9.85\build\wp8\Microsoft.Bcl.Compression.targets и вуаля :) - person waldemarhuber; 25.02.2015
comment
Похоже, что большинство пакетов SQLite изменили свое целевое имя, чтобы избежать этого, но у sqlite-net-wp8 все еще есть проблема в 3.8.5. Это указано в их репо, но еще не выпущено в nuget: github.com/peterhuene /sqlite-net-wp8/коммит/ - person Rich; 25.02.2016