Использование Sqlite с приложением asp.net core в Windows IoT

У меня есть приложение Asp.netCore.

Я установил его выход в exe.

Затем я компилирую его так:

dotnet publish -r win-arm

Затем я открываю общий сетевой ресурс на моем Raspberry Pi под управлением Windows 10 IoT.

Я копирую все содержимое моей опубликованной папки на рабочем столе в папку на моем raspberry pi.

Затем я использую powershell, чтобы запустить этот exe.

Затем я перехожу к IP-адресу Raspberry Pis со своего рабочего стола.

мои страницы загружаются нормально.

Если я теперь перейду на страницу, которая, как я знаю, получит записи из моей базы данных sqlite, я получу эту ошибку:

введите описание изображения здесь

Чтение ошибки говорит мне (я думаю), что я использую неправильную dll.

В настоящее время я использую библиотеки DLL для Sqlite, которые я использовал в предыдущем приложении uwp, которое я также развернул в блоке Raspberry Pi (и это сработало).

У меня есть Googled, и он сказал мне использовать библиотеки DLL uwp. Все, что я могу думать об этом, это потому, что я скомпилировал его с помощью переключателя руки, мне нужно использовать sqlite dll при использовании этого на поле Pi.

Прав ли я, и если да, то где взять dll для arm sqlite?

если я ошибаюсь, что мне делать?

Также я использую .netcore 2.1

Вот библиотеки, которые я использую:

введите описание изображения здесь

Благодарность

ОБНОВИТЬ.

После ответа Риты я получил другую ошибку:

введите описание изображения здесь


person Andrew Simpson    schedule 02.10.2018    source источник
comment
Попробуйте использовать пакет SQLitePCLRaw.bundle_green NuGet вместо расширений SQLite libs / VS, если ваша минимальная версия, по крайней мере, равна 16299. Это попытается загрузить версию SQLite, которая поставляется с самой Windows (и, следовательно, должна работать в ARM IoT ... если он фактически включен в версии IoT D;), а не в версию, которую вы отправляете вместе с вашим приложением.   -  person Johnny Westlake    schedule 02.10.2018
comment
@JohnnyWestlake Спасибо за ответ. Это у меня уже есть. Как вы можете видеть в моем обновленном вопросе, я в отчаянии включил множество библиотек sqlite. Я изначально не включил все это, поэтому теперь мне интересно, следует ли мне удалить некоторые из них, чтобы должным образом проверить ваше предложение? Благодарность   -  person Andrew Simpson    schedule 02.10.2018
comment
у меня работают только эти два пакета: SQLitePCLRaw.Core и SQLitePCLRaw.provider.winsqlite3.uwp10, а затем вызывает SQLitePCL.raw.SetProvider(new SQLite3Provider_winsqlite3()); перед тем, как делать что-нибудь с SQLite. Однако это может не сработать, потому что вы не в UWP. Также есть версия .NET 4.5, но нет пакета .NET Core = [   -  person Johnny Westlake    schedule 02.10.2018
comment
Но стоит попробовать пакет UWP - я не могу найти его источник, но он может быть дружественным к .Net Core.   -  person Johnny Westlake    schedule 02.10.2018
comment
@JohnnyWestlake Я пробовал использовать uwp с ядром, но это не сработало. Я удалил все библиотеки sqlite и установил только raw и raw_green. Но мои теги, такие как: [PrimaryKey] и т. Д., Не распознаются, поэтому не могу создавать и тестировать.   -  person Andrew Simpson    schedule 02.10.2018
comment
@closer, пожалуйста, объясните, почему это не проблема программирования? Было бы интересно понять вашу логику. та   -  person Andrew Simpson    schedule 02.10.2018
comment
@JohnnyWestlake только что удалил все теги атрибутов y. из моих dto классов. Теперь я пытаюсь подключиться к базе данных с помощью этой библиотеки. У вас есть пример, пожалуйста?   -  person Andrew Simpson    schedule 02.10.2018
comment
Извините, также оставьте sqlite-net, на котором основывается все остальное. Это должен быть единственный другой необходимый пакет.   -  person Johnny Westlake    schedule 02.10.2018
comment
@JohnnyWestlake sqlite-net-pcl или просто sqlite-net?   -  person Andrew Simpson    schedule 02.10.2018
comment
Просто sqlite-net, если вы используете библиотеку, совместимую со стандартом .Net.   -  person Johnny Westlake    schedule 02.10.2018
comment
@JohnnyWestlake - это все по сути. К сожалению, я сделал все это и до сих пор получаю ту же ошибку. настоящая боль. но спасибо, что подарили мне надежду :)   -  person Andrew Simpson    schedule 02.10.2018
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Johnny Westlake    schedule 02.10.2018
comment
@AndrewSimpson Можно ли воспроизвести эту проблему на рабочем столе Windows 10?   -  person Rita Han    schedule 03.10.2018
comment
@ RitaHan-MSFT Он отлично работает на рабочем столе. Мой вопрос направлен на цель руки   -  person Andrew Simpson    schedule 03.10.2018


Ответы (1)


Эта проблема связана с отсутствием файла e_sqlite3.dll в папке публикации основного приложения asp.net. Вы можете найти похожие проблемы на Github, например this.

Я тестирую обходной путь на Raspberry Pi с Windows IoT Core, и он мне подходит.

Найдите winsqlite3.dll в \ Windows \ system32 на Raspberry Pi, скопируйте этот файл в папку публикации приложения и переименуйте его в e_sqlite3.dll. Тогда все заработает.

Необходимо установить только пакет NuGet Microsoft.Data.Sqlite.

Содержимое файла .csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.Data.Sqlite" Version="2.1.0" />
  </ItemGroup>

</Project>
person Rita Han    schedule 04.10.2018
comment
выглядит многообещающе! Скоро буду тестировать. Вернусь к вам. Большое спасибо! :) - person Andrew Simpson; 04.10.2018
comment
Не сработало; (Я распотрошен. Но на этот раз у меня другая ошибка, и я обновлю свой вопрос с помощью - person Andrew Simpson; 04.10.2018
comment
Я просто правильно прочитал твой ответ. Первоначально я скопировал эту dll из папки windows \ system на рабочем столе, а не с жесткого диска pi. Так и сделали, как вы сказали, и все работает !! Я мог бы дать вам вдвое больше очков. Я смирился с созданием фонового рабочего и использовал его, чтобы разговаривать с базой данных и передавать информацию туда и обратно. Рад, что мне теперь не нужно :) - person Andrew Simpson; 04.10.2018