Member 13199484 Ответов: 2

Развертывание приложения WPF с базой данных sqlite


привет
я пытаюсь развернуть приложение wpf с базой данных sqlite и целевой платформой .net framework 4.5.2, когда я устанавливаю приложение, оно работает на моей машине (той же машине, на которой я разрабатываю приложение)
но когда я устанавливаю приложение на другие устройства, оно не работает.
я много ищу одну и ту же проблему у многих людей есть одна и та же проблема, я попробовал их решение, но оно не работает для меня.
я прикрепляю библиотеку DLL sqlite и файл базы данных, но никаких изменений.
я устанавливаю его на ПК, который имеет все библиотеки DLL и .netframework, но он не работает, я думаю, что это что-то связано с sqlite
может ли кто-нибудь сделать это возможным?

Что я уже пробовал:

лучше опубликовать через против 2015
vs installer в visual studio 2015

2 Ответов

Рейтинг:
2

Graeme_Grant

Вам нужно вручную добавить SQLite.Interop.dll файл и папка основного проекта вашего решения для используемого типа сборки. Когда вы будете готовы к публикации, проверьте и попросите своего установщика включить их. Вы можете найти файл и папки в разделе packages\System.Data.SQLite.Core.1.0.106.0\build папка решения.


Member 13199484

Я добавляю эти библиотеки в папку bin и говорю vs скопировать их в выходные данные.
но для SQLite.Interop.dll когда я добавляю его и перестраиваю проект, он исчезает.

Graeme_Grant

Вы добавляете их в проект, а не в папку bin, и устанавливаете свойства для добавления, если они более новые. при компиляции приложения файлы будут скопированы как часть процесса сборки.

Member 13199484

Я добавляю dll ничего не меняю приложение все еще не работает

Graeme_Grant

Это работает - я делаю это с помощью своих собственных проектов и установки ClickOnce...

Добавьте папки x86 и x64 в ваш основной проект и добавьте существующие папки. SQLite.Interop.dll файл (не путайте их) и установите свойство проекта "копировать" для каждого из них. (боковое примечание: одно из моих приложений имеет более 200 проектов, и один из них является основным проектом приложения, поэтому я добавляю в него папки и файлы). Теперь (release) создайте приложение и убедитесь, что папки и файлы правильно скопированы в папку bin. Как только они это сделают, теперь настройте свой установщик так, чтобы он правильно копировал файлы. Теперь вы готовы к публикации...

У меня есть статья о том, как сделать "тихий" ClickOnce и подводных камней, чтобы избежать: Бесшумный установщик ClickOnce для Winform & WPF в C# & VB[^]

В настоящее время я работаю над статьей SQLite, но она еще не закончена. Я отметил вашу проблему и рассмотрю ее в одном из разделов статьи. Когда она будет опубликована? Хороший вопрос! Я работаю над этим между работой и ответами на вопросы здесь. Это довольно всеобъемлющая и займет немного больше времени, чтобы закончить. Так что точной даты публикации нет, извините.

Member 13199484

Пожалуйста, не могли бы вы удалить мой компьютер и проверить проект?

Graeme_Grant

Извините, но я не могу этого сделать. Пожалуйста, внимательно прочитайте решение еще раз и дополнительные комментарии, которые я дал выше. Проверьте каждый шаг очень тщательно, чтобы убедиться, что вы делаете их правильно. "Отмерь два раза, отрежь один раз", как говорится... Если вы это сделаете, это сработает. :)

Member 13199484

спасибо я прочитаю его еще раз и сделаю это шаг за шагом

Graeme_Grant

Также прочтите этот ответ на очень похожий на ваш вопрос: Как развернуть базу данных SqLite с помощью приложения windows[^]

Member 13199484

ладно у меня есть маленький вопрос:
я вручную добавляю SQLite.Interop.dll в папки x64 и x86 в папке bin
потом в моем проекте. должен ли я нажать кнопку Добавить->существующий элемент и исследовать SQLite.Interop или просто в панели решений -> показать папку в explore для dll и щелкнуть правой кнопкой мыши, а затем включить в проект?

и когда я перестраиваю проект SQLite.Interop.dll автоматически удаляется из папки bin.
и теперь я перезапускаю это внутри папки bin после перестройки другой папки bin добавленной так что у меня есть папка bin внутри папки bin

Graeme_Grant

"вручную добавьте SQLite.Interop.dll в папки x64 и x86 в папке bin" ... это твоя проблема, а не твоя.

Пожалуйста, внимательно прочитайте мое решение выше еще раз и дополнительную информацию выше. Добавьте их в проект, а не в папку bin.

Member 13199484

я делаю это и для того, чтобы быть в безопасности, лол.

Graeme_Grant

Если вы добавите проект в решение, то те, которые вы вручную добавите в папку bin, будут автоматически заменены сборкой. Во-вторых, процесс публикации установщика не будет видеть файлы, которые вы вручную поместили в папку bin. Процесс публикации установщика смотрит только на проект. Так бессмысленно делать то, что вы делаете...

Рейтинг:
1

Tachyonx

Пожалуйста, проверьте журнал событий windows, так как там может быть больше информации о причине ошибок...
Его можно найти в средстве просмотра событий, в частности в журнале приложений и системном журнале ...
Овации,