Как мы уже упоминали ранее, простая замена Environment.SpecialFolder.Personal
на Environment.SpecialFolder.LocalApplicationData
решит проблему. Вы можете проверить Environment.SpecialFolder Enum для получения подробной информации о каждой опции. И теперь ваши вещи загружаются правильно:

Ответ на ваши последующие комментарии:
Да, MCVE , который вы разместили на github, теперь работает без проблем после , изменив значение на LoadApplicationData
, как мы описали, включая ваш тестовый код, как показано ниже:
[3/10/2019 4:26:28 PM Informational] [xUnit.net 00:00:00.02] xUnit.net VSTest Adapter v2.4.0 (64-bit .NET Core 4.6.27129.04)
[3/10/2019 4:26:31 PM Informational] [xUnit.net 00:00:03.41] Discovering: XUnitTestProject1
[3/10/2019 4:26:31 PM Informational] [xUnit.net 00:00:03.61] Discovered: XUnitTestProject1
[3/10/2019 4:26:31 PM Informational] ========== Discover test finished: 1 found (0:00:11.5651246) ==========
[3/10/2019 4:26:31 PM Informational] ------ Run test started ------
[3/10/2019 4:26:32 PM Informational] [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.0 (64-bit .NET Core 4.6.27129.04)
[3/10/2019 4:26:33 PM Informational] [xUnit.net 00:00:00.63] Discovering: XUnitTestProject1
[3/10/2019 4:26:33 PM Informational] [xUnit.net 00:00:00.70] Discovered: XUnitTestProject1
[3/10/2019 4:26:33 PM Informational] [xUnit.net 00:00:00.70] Starting: XUnitTestProject1
[3/10/2019 4:26:35 PM Informational] [xUnit.net 00:00:02.60] Finished: XUnitTestProject1
[3/10/2019 4:26:35 PM Informational] ========== Run test finished: 1 run (0:00:03.9952011) ==========

Если мы вернемся к папке Personal
, мы получим то же исключение, о котором вы сообщили:
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 14: 'unable to open database file'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteConnection.Open()
at System.Data.Common.DbConnection.OpenAsync(CancellationToken cancellationToken)
Причина, по которой вы можете запустить свой тестовый код, но не приложение, возможно, в том, что эти два имеют разные требования к разрешениям.
Пожалуйста, помните, что для того, чтобы это работало в обоих случаях, вам нужно не только изменить Environment.SpecialFolder
, но и поместить TestSqLite.db
в соответствующую папку. В нашем случае папка выглядит примерно так:
C:\Users\SomeUser\AppData\Local\Packages\0eea1ae6-65c3-42e9-9a50-869730e52f63_2ft3g98yvwh70\LocalState
Очевидно, вы должны получить похожий, но немного другой путь.
Комментарии к проверке результата: Выполнение этой простой процедуры проверки занимает всего пару минут. Вот что происходит, когда мы переключаемся обратно на Environment.SpecialFolder.Personal
, имея TestSqLite.db
в соответствующей папке C:\Users\SomeUser\Documents
.
Как показано ниже, для загрузки начальной страницы Browse приложению требуется больше времени, чем обычно (здесь сокращено для ограничения размера загрузки). Когда это наконец произойдет, начальная страница будет пустой. Переключение между страницей About и затем обратно на Просмотр страницы приводит к зависанию приложения (дождитесь его). Опять же, это простая процедура, которая занимает мало времени и не требует усилий.
