【问题标题】:Is EntityFrameworkCore.Sqlite embeddable in a self-contained single file application?EntityFrameworkCore.Sqlite 是否可嵌入到独立的单文件应用程序中?
【发布时间】:2021-03-02 07:31:55
【问题描述】:

我正在开发一个 CLI 工具,我希望它完全独立,因此用户可以直接运行二进制文件。它目前使用 .NET 5 以及 Microsoft.EntityFrameworkCore.Sqlite 版本 5.0.0。

复制行为非常容易:

  1. 使用dotnet new 创建一个新项目
  2. 添加 EF Core sqlite 与:
    dotnet add package Microsoft.EntityFrameworkCore.Sqlite
    
  3. 发布自包含的应用程序:
    dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained true -c Release -o publish
    

现在您将看到输出目录将有 3 个文件:

libe_sqlite3.so
<project_name>.pdb
<project_name>

包含&lt;project_name&gt; 的两个很好,但是应用程序无法运行的 libe_sqlite3.so 使其不能完全独立。

提供者和版本信息:

  • EF Core 版本:5.0.0
  • 数据库提供者:Microsoft.EntityFrameworkCore.Sqlite
  • 目标框架:.NET 5.0
  • 操作系统:Ubuntu 20.04

【问题讨论】:

    标签: sqlite .net-core entity-framework-core


    【解决方案1】:

    有可能,如here所述:

    默认情况下,单个文件不捆绑原生库。

    ...

    这是为了保证良好的调试体验,需要原生文件 从单个文件中排除。有一个设置标志的选项, IncludeNativeLibrariesForSelfExtract,将本机库包含在 单个文件包,但这些文件将被提取到一个 单个文件时在客户端机器的临时目录 应用程序正在运行。

    在你的情况下:

    dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained true -c Release -o publish /p:IncludeNativeLibrariesForSelfExtract=true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多