我正在开发一个使用SQLite数据库的C#应用。
我在app.config
中指定了一个连接字符串,它使用相对路径指向数据库文件。
相对于项目根目录的目标是./Data/MyDb.db
然而,基于我的发布属性和VS发布菜单,可能会发生两件事:
备选办法1:
在Project〉Properties〉Publish〉Application Files中,如果我将/data/MyDb. db的发布状态标记为“Include”,则在部署应用程序时,我不知道数据库文件位于何处。它确实在应用程序中成功保存和检索数据,但我不知道这些更改正在写入何处,因为安装文件夹X1 M1 N1 X中的文件没有存储它们。我可以添加一条新记录,不对文件进行任何修改,但应用程序仍然能够检索记录,即使在重新启动PC后,这意味着它确实在某个地方保存数据。
备选方案二:
如果我将data/MyDb.db文件的发布状态标记为“Data File”,当我部署应用程序并在其中写入数据时,所有数据都存储在开发项目文件夹中的同一个文件中。部署不会将文件复制到其安装文件夹。这看起来可能并不那么不方便,因为至少我知道更改正在写入的位置,但它看起来很麻烦,因为我需要在项目文件夹中拖动,无论我想在哪里安装应用程序,而它应该是完全独立的。
有没有办法让项目把数据库文件复制到安装文件夹中,或者至少确定实时应用存储更改的位置?或者我遗漏了什么?有没有更好的方法来集成数据库?
1条答案
按热度按时间szqfcxe21#
没有“视觉选项”,很多事情都可能无法解决这个问题。
正如您所说,
Copy to output
只适用于调试bin,而不是发布。如果您没有尝试任何方法,“按原样”解决方案是:
打开
.csproj
文件并添加以下内容:只更改示例的目录和文件名,不更改任何其他内容。我使用了项目主目录,但您可以使用其他目录。我不使用bin,因为这将复制我的调试数据库,我需要一个新的空白SQLite文件。
但请注意:
不是必需的,但有助于工作:
.csproj
文件不在排除文件等组中,请签入该文件:在csproj内部:
您将尝试从Visual Studio中包含,但不起作用,不执行任何操作,您需要使用文本编辑器(如记事本++)将其从文件中删除