【问题标题】:Can you bundle SQLite in your exe file?您可以将 SQLite 捆绑到您的 exe 文件中吗?
【发布时间】:2017-08-09 06:25:33
【问题描述】:

我对编程比较陌生,正在制作一个小型应用程序,它基本上是特定游戏的计算器。因此,我希望用户能够更改与游戏相关的一些值以及在应用程序执行之间持续存在的更改,即保存但我不想使用超过 1 个文件(EXE)。

我知道 SQLite 和 ILMerge,但不确定是否可以使 EXE 文件本身包含一个小型数据库,以便用户可以更改和保存该 exe 中的值。我尝试搜索,但不知道使用什么确切的术语,所以我没有运气。

【问题讨论】:

  • 如果你想要一个持久的数据库,你的 .exe 文件之外总是至少有一个文件。您当然可以始终使用相同的文件,因此您的所有数据最终都将保存在该 db 文件中。对于部署,您可以随 .exe 一起提供一个包含所有需要的表等的空数据库,或者如果文件不存在,则从代码创建它。
  • @Fildor,我希望有一些方法可以将 DB 文件打包到 EXE 或其他东西中。 :(
  • 另一个想法是将“备份”文件存储在云空间的某处,并让应用程序使用在启动时从该云文件恢复的 in-mem SQlite DB。
  • Inside .exe - 我不知道的可能性。至少不是为了数据。 .dll 可能可以摆弄编译器/链接器,但我从未尝试过。

标签: c# wpf database sqlite


【解决方案1】:

没有你想的那么复杂

您可以使用 NuGet 或自行下载。

使用 NuGet,然后搜索“System.Data.SQLite”并安装它。 这会将您需要的引用添加到您的项目中。

基本上就是这样!当您构建/编译时,您将在输出目录中包含您的应用程序所需的所有内容(其中将包括 DLL)。无需在您的应用中嵌入任何其他 .exe 或其他任何内容(当然除了您的数据库!)

本文展示了 SQLite 入门:https://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application

在您的情况下,我认为您的应用程序非常简单,以至于您可能不需要数据库,并且对数据文件(可能是 JSON 格式)的简单持久性就足够了。但是您仍然可以将此作为学习练习。

【讨论】:

  • 我明白了,NuGet 确实很有帮助,但不会创建额外的文件 (DLL),我必须将其与我的 exe 一起“运送”才能使其正常工作?我一直在寻找一种仅在单个 exe 文件中具有所需功能的方法。
  • 是的。但是您说您知道 ILMerge,它可以让您将所有 DLL 合并到一个 exe 中。
  • 您还可以将数据库文件作为“资源”嵌入到 .exe 中。但是您需要在应用程序启动时将其提取出来,以便将您的更改写入其中。
  • 抱歉,我应该澄清一下我只听说过“ILMerge”。 :D 我想它可以将 DLL 合并到 EXE 中并解决我的问题?
猜你喜欢
  • 2013-07-13
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多