Пакет NuGet в нескольких проектах - PullRequest
0 голосов
/ 09 июля 2019

У меня есть проект, который я использовал для создания обработки базы данных SqLite3. Этот проект используется несколькими другими проектами, которые, в свою очередь, используются проектом пользовательского интерфейса. Я только добавил пакет Nuget в проект, обрабатывающий интерфейс SqLite3.

Когда я пытаюсь запустить пользовательский интерфейс, он выполняет вызовы для получения информации из базы данных, и когда это происходит, я получаю исключение System.DllNotFoundException для SQLite.Interop.dll.

Так как же заставить это работать без добавления пакета Nuget во все проекты в решении?

1 Ответ

0 голосов
/ 10 июля 2019

Возможно, ваша проблема похожа на эту , которая часто возникает при использовании Sqlite в проектах WPF.

Похоже, что SQLite использует сборку ввода, чтобы определить, какую версию Interop загрузить.

А в вашей ситуации, простые способы, которые вы можете попытаться решить ( Сначала сделайте резервную копию ):

  1. Щелкните правой кнопкой мыши свой UI project=>Properties=>Build=>disable the Prefer 32-bit или измените platform target from Any CPU to X64 or X86.

enter image description here

  1. Вам не нужно добавлять nuget во все ваши проекты в решении, я думаю, достаточно добавить его в проект пользовательского интерфейса (основной проект, который в вашем решении задан как проект StartUp).

  2. Кроме того, вы можете попробовать ответ Вила , что вам нужно сделать: создать x64 and x86 папок в вашем каталоге проектов UI (где существует xx.csproj) => найти и скопировать SQLite.Interop.dll для x64 и x86 в соответствующие папки. Затем в VS щелкните правой кнопкой мыши проект пользовательского интерфейса => unload UI project и edit xx.csproj => скопируйте сценарий рабочей версии в файл xx.csproj и перезагрузите проект пользовательского интерфейса (скопируйте скрипт ItemGroup within <Project> tag)

Не забудьте перестроить проект перед запуском приложения.

...