Непонятный Exception после попытки открыть базу данных в Xamarin

Приложение получает пакеты данных с файлом sqlite3 через Udp сокет, и записывает его в Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData:

        public static void saveResponseToFile(string filename, byte[] response)
    {
        string filePath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), filename);
        FileStream fs = File.Create(filePath);
        fs.Write(response, 0, response.Length);
        fs.Close();
    }

Я проверяю существует ли этот файл с помощью File.Exists(), она выдает true. Дальше, я пытаюсь подключится к базе данных и вернуть словарь нужных мне значений. Вот функция:

     Dictionary<string, string> functions = new Dictionary<string, string>();
     const string selectNameAndCodeFromFunctionsTable = "SELECT NAME, secret_message FROM functions";


 using (var connection = new SqliteConnection($"Data source={path}"))
 {
     connection.Open();

     SqliteCommand command = new SqliteCommand(selectNameAndCodeFromFunctionsTable, connection);
     using (SqliteDataReader reader = command.ExecuteReader())
     {
         if (reader.HasRows)
         {
             while (reader.Read())
             {
                 var name = reader.GetValue(0);
                 var secret_message = reader.GetValue(1);

                 functions[$"{name}"] = $"{secret_message}"; // name is Object thats why i use ${value}
             }
         }
     }
     connection.Close();
 }
 return functions;

Строчка using (var connection = new SqliteConnection($"Data source={path}")) выдает System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation.'

Вот детали ошибки: {System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: winsqlite3 assembly: type: member:(null)

at (wrapper managed-to-native) SQLitePCL.SQLite3Provider_winsqlite3+NativeMethods.sqlite3_libversion_number()
at SQLitePCL.SQLite3Provider_winsqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number () [0x00000] in <6e5232d9ffef469aa0226cf75735d5dc>:0
at SQLitePCL.raw.SetProvider (SQLitePCL.ISQLite3Provider imp) [0x00008] in <034c99e83d644b8ea495ce45509cf104>:0
at SQLitePCL.Batteries_V2.Init () [0x00005] in <42657b7645474aabb7c557ccf3cfec47>:0
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:395

--- End of inner exception stack trace ---

at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00081] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:409
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/Common/src/CoreLib/System/Reflection/MethodBase.cs:53
at Microsoft.Data.Sqlite.SqliteConnection..cctor () [0x0003b] in :0 }

Причиной может быть просто потеря пакетов и как результат неправильная запись файла, но как мне это проверить? Если я попробую сохранить бд во внешнем хранилище приложения, я смогу ее как-то открыть сам и посмотреть что там творится(если запущу с телефона и посмотрю через проводник в хранилище телефона)? Ил


Ответы (0 шт):