UWP 应用程序在调试模式下连接到数据库,同时在发布模式下编译后引发异常

问题描述 投票:0回答:1

我面临一个问题,其中一行代码在调试模式下工作,但不在发布模式下工作。我有一个 UWP 应用程序,它连接到 localState 文件夹中的 sqlite 数据库,执行此操作的代码行是下面的代码行

Connection = new SqliteConnection($"Data Source={ApplicationData.Current.LocalFolder.Path}\\{DB_NAME}");

我正在使用 SQLite 开发团队的 System.Data.SQLite 包,通过 NuGet 安装,并按如下方式导入

using SqliteConnection = System.Data.SQLite.SQLiteConnection;

逻辑是:我在电脑上的某个地方有一个数据库,我必须将数据库复制到 localState 文件夹(已经可以使用),并且我需要打开它才能开始处理数据,超级基本的东西。问题来了:在调试时一切都按预期工作,在发布模式下发布项目会导致第一行共享代码出现以下异常

2024-08-09 11:37:58 - Value cannot be null.
Parameter name: path1 -    at System.IO.Path.Combine(String, String) + 0x50
   at System.Data.SQLite.SQLiteConnection..ctor(String, Boolean) + 0x34b
   at Prime.Db.Database.<Inizializza>d__12.MoveNext() + 0x16f
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x21
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task) + 0x70
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task) + 0x38
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task) + 0x17
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult() + 0xb
   at Prime.SplashScreenPage.<CaricamentoIniziale>d__8.MoveNext() + 0x3e2a
 - Prime.Db.Database+<Inizializza>d__12 - <Inizializza>d__12

我有点困惑,因为我不知道这两种情况有什么区别,所以我不知道手该放哪里。
你们对这个案子有什么线索吗?
我们将不胜感激。

提前致谢。

c# sqlite uwp compilation system.data.sqlite
1个回答
0
投票

好的,
这是 System.Data.SQLite 版本 1.0.118.0(最后一个稳定版本)问题。

https://system.data.sqlite.org/index.html/doc/trunk/www/news.wiki,您可以在版本历史记录部分的正下方找到较新的 1.0.119.0 发行说明。在第 4 点报告了以下句子

为项目启用 PublishSingleFile 属性时,避免 Path.Combine 方法中出现 NullReferenceException。根据论坛帖子66a0d2716a

在链接的论坛帖子中可以找到更多详细信息。如果您遇到同样的问题,您可以快速阅读帖子以查看可用的解决方法,我决定降级到版本 1.0.117.0,一切都按预期进行。

仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.