【问题标题】:Open SQLite database in C# WITHOUT installing anything在 C# 中打开 SQLite 数据库而不安装任何东西
【发布时间】:2013-09-07 08:18:43
【问题描述】:

我正在编写一个可移植的 C# 应用程序,旨在作为 USB 上的单个可执行文件运行。它需要能够从 SQLite 数据库中提取一些数据。因为它是可移植的,所以不能在本地安装一些东西。我见过像thisthis 这样的问题,但它们需要安装第三方软件。

如何在不丢失可移植性的情况下获取这些数据?

编辑: 我尝试使用 System.Data.SQLite NuGet 包。它可以工作,但突然间我从一个可执行文件变成了一个可执行文件、一个 .dll 和两个附加文件夹。我可以处理(尽管不愉快)添加一个 dll,但这太多了。

【问题讨论】:

  • 你真的不需要安装任何东西。只需下载一个额外的 dll 并将其与您的程序一起显示。
  • This 看起来不仅仅是一个 dll
  • 由于源代码可用 - 您可以将托管 dll(System.Data.SQLite.dll 和 System.Data.SQLite.Linq.dll)集成到您自己的 dll 中。您仍然会留下 1 或 2 个本机 dll 文件。为什么你这么关心数字文件?
  • @Vadim 这个程序的想法是它可以尽可能简单地轻松传输、复制、移动等。拥有多个文件会使事情复杂化

标签: c# sqlite portability portable-applications


【解决方案1】:

你有两个选择:

  1. 使用IlMerge
  2. Embed an assembly as a resource

【讨论】:

    【解决方案2】:

    嗯,我认为它已经达到了最好的水平:我把它归结为一个可执行文件和一个 dll 文件。

    为此,我将可执行文件的架构从 Any CPU 更改为仅 x86,然后安装了“System.Data.SQLite.x86”NuGet 包。

    如果有人知道如何在单个可执行文件中保留该功能,我将不胜感激。

    【讨论】:

      【解决方案3】:

      试试 Costura.Fody(浏览 Nuget 包),我通常使用这个,它将所有内容打包在一个 exe 中,我相信它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2020-11-05
        • 2012-10-05
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        相关资源
        最近更新 更多