2016-05-04 3 views
2

У меня есть небольшое приложение C# WinForms, разработанное с помощью Visual Studio Community 2015 в Windows 8.1 на 64-разрядном компьютере и нацеленное на .NET Framework 4.5.2 и Any CPU | Предпочитаете 32-бит. (Я также попытался настроить только x86).Как опубликовать приложение Winforms с помощью SQLite с помощью ClickOnce

Я использовал диспетчер пакетов NuGet для установки Entity Framework 6.3.1 и System.Data.SQLite 1.0.101 (который установил System.Data.SQLite, System.Data.SQLite.Core, System.Data.SQLite.EF6, и System.Data.SQLite.Linq), хотя System.Data.SQLite.Core не отображается в ссылках на проект.

Приложение отлично работает в отладчике VS, но опубликованная версия ClickOnce запускает исключение SQLite.Interop.dll при установке и запуске на том же компьютере.

Я не вижу ссылок на SQLite.Interop.dll в Обозревателе решений. Существуют такие DLL в обеих папках Debug x86 и x64 проекта, но не в папке Release, которая пуста. Когда я пытаюсь добавить ссылку на библиотеки x86 или x64, я получаю сообщение о том, что они не могут быть добавлены (т. Е. Недоступны или нет действительной сборки или COM-компонента). Все три библиотеки SQLite в ссылках на проект имеют Copy Local = true.

Я предполагаю, что установка SQLite NuGet не смогла установить какое-либо свойство/ссылку на проект, но я не знаю, что это может быть, почему и как обойти его. Я даже не уверен, кто отвечает: SQLite, NuGet, Visual Studio, я?

Спасибо за любую помощь. Steve

+0

У меня такая же проблема. Далее я добавлю, что я попытался установить пакет с перераспределением C++ с моим решением clickonce безрезультатно. Есть много решений этой же проблемы лет назад, но ничего, что на самом деле решает проблему для меня – MrNickel

ответ

5

Я просто нашел рабочее решение. Читать комментарий структурированную https://github.com/oysteinkrog/SQLite.Net-PCL/issues/158#issuecomment-88163499 < - там

Важная деталь:

Я создал новые папки проект для x86 и x64. Я создал папки проекта в проекте, который один раз развертывает. То есть проект, который создает исполняемый файл. Я скопировал файлы interop из папки bin в новые папки решений.

+0

Спасибо за ответ. Я попытался добавить SQLite.Interop.dll в развертывание, добавив его в ссылки, но получил ошибку при попытке (я думаю, потому что это не управляемый код). –

+1

Чтобы сделать его более понятным: чтобы добавить dll после создания папок, используйте «Добавить -> Существующий элемент» и выберите файлы dll. – muccix

0

Просто включите папки x86 и x64 в свой исследовательский проект. Затем установите Копировать в local = true. Я создам папки с sqlite.interop.dll

+0

Как вы устанавливаете «Скопировать на локальный» в папку? – Zolbayar