将本地SQLite数据库文件放在WinForms应用程序中以在GitHub上发布项目并分发可执行文件的最佳方式是什么?

oyjwcjzk  于 2022-12-13  发布在  SQLite
关注(0)|答案(1)|浏览(151)

我试图将一个Windows Forms VB.Net应用程序推送到GitHub,该应用程序在本地SQLite数据库文件上执行CRUD操作,但我意识到db 3文件和System.Data.SQLite.dll被排除在推送之外,因为它们所在的bin/Debug文件夹的内容是Visual Studio上.gitignore策略模板的一部分,这绝对是有意义的。
我已经在Debug开发文件夹之外测试了.exe文件,也无法运行应用程序,并引发了异常:未能加载文件或程序集“System.Data.SQLite,Version=1.0.116.0,Culture=neutral,PublicKeyToken=...”或它得某个依赖项
我的问题是,我所查看的在Windows窗体项目中使用SQLite的所有指南都将数据库文件放置在bin/Debug中,我想这是为了简化教程。因此,在bin/Debug中引用SQLite db 3的这种方式在我的应用程序中工作得很好:

Public dbFullPath As String = Application.StartupPath & "\\myDatabase.db3"
Public conStr As String = String.Format("Data Source = {0}; version = 3;", dbFullPath)

然而,我不知道如何将数据库放置在其他项目文件(如.vb Forms和Resources文件夹)的同一级别,并引用它,以便应用程序工作,并将所有必要的文件推送到我的公共存储库。
我在项目级别创建了一个App_Data文件夹,并将数据库文件放入其中,然后尝试替换路径String from:

Public dbFullPath As String = Application.StartupPath & "\\myDatabase.db3"

更改为:

Public dbFullPath As String = "App_Data\\myDatabase.db3"

但我无法在bin/Debug以外的其他位置打开数据库。
非常感谢你的帮助。

p1iqtdky

p1iqtdky1#

为了在visual studio环境之外运行应用程序,您需要复制在生成时生成的x64和x86文件夹。
Chem4Word中,我们使用NuGet包SQLite 1.0.117来读取和写入SQLite数据库,该数据库部署在C:\ProgramData\Chem4Word中,但它可以位于文件系统中的任何位置以满足您的目的。
我们的安装程序还将上述文件夹(x64和x86)的内容部署在C:\Program Files(x86)\Chem4Word中的应用程序文件夹下,如下所示。“种子”数据库存储为嵌入式资源,因此被签入到存储库中。

相关问题