.NET 5 从单个文件发布中排除了一些库

2023-06-25数据库问题
3

本文介绍了.NET 5 从单个文件发布中排除了一些库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我在使用 .NET 5 发布单个文件可执行文件时遇到了一个小问题.
事实上,它并不包括可执行文件中的所有库,而是产生多个文件.

I have a little problem with single file executable publish with .NET 5.
Infact, it does not include all libraries in the executable file, and produces multiple files.

在我的示例中,我使用的是 SQLite (Microsoft.Data.Sqlite) 库,并且在编译后,不包括 e_sqlite3.dll.
相反,在输出文件夹中,它会生成两个文件(不包括 pdb 文件):

In my example I'm using a library for SQLite (Microsoft.Data.Sqlite) and, after compilation, e_sqlite3.dll is not included.
Instead, in the output folder, it produces two files (excluding the pdb file):

> e_sqlite3.dll
> WpfApp1.exe

推荐答案

通过阅读 文档

默认情况下,单个文件不捆绑本机库.在 Linux 上,我们将运行时预链接到包中,并且仅将应用程序本机库部署到与单文件应用程序相同的目录中.在 Windows 上,我们仅预链接托管代码,运行时和应用程序本机库都部署到与单文件应用程序相同的目录中.这是为了确保良好的调试体验,这需要从单个文件中排除本机文件.有一个选项可以设置标志 IncludeNativeLibrariesForSelfExtract,以在单个文件包中包含本机库,但是当运行单个文件应用程序时,这些文件将被提取到客户端计算机的临时目录中.

Single-file doesn't bundle native libraries by default. On Linux, we prelink the runtime into the bundle and only application native libraries are deployed to the same directory as the single-file app. On Windows, we prelink only the hosting code and both the runtime and application native libraries are deployed to the same directory as the single-file app. This is to ensure a good debugging experience, which requires native files to be excluded from the single file. There is an option to set a flag, IncludeNativeLibrariesForSelfExtract, to include native libraries in the single file bundle, but these files will be extracted to a temporary directory in the client machine when the single file application is run.

因此(在我的情况下e_sqlite3.dll)默认情况下不包含本机库以确保良好的调试体验.
如果您想将它们包含在应用程序可执行文件中,只需将此行添加到项目 (.csproj) 文件中即可.

So (in my case e_sqlite3.dll) native libraries are not included by default to ensure a good debugging experience.
If you want to include them anyway in the application executable, you can simply add this line to the project (.csproj) file.

<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>

示例:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
    <StartupObject>WpfApp1.App</StartupObject>
    <Description>WpfApp1</Description>
  </PropertyGroup>

...

</Project>

这篇关于.NET 5 从单个文件发布中排除了一些库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在 SQLite 中按月分组
Group by month in SQLite(在 SQLite 中按月分组)...
2024-04-16 数据库问题
6

如何从 Python 中的数据库创建 CSV 文件?
How do I create a CSV file from database in Python?(如何从 Python 中的数据库创建 CSV 文件?)...
2024-04-15 数据库问题
3

SQLite3 和多个进程
SQLite3 and multiple processes(SQLite3 和多个进程)...
2024-04-15 数据库问题
5

如何使用 RSqlite 将 CSV 导入 sqlite?
How to import CSV into sqlite using RSqlite?(如何使用 RSqlite 将 CSV 导入 sqlite?)...
2023-11-28 数据库问题
6

MySQL、PostgreSQL、SQLite中数据库列类型的比较?(交叉映射)
Comparison of database column types in MySQL, PostgreSQL, and SQLite? (Cross-Mapping)(MySQL、PostgreSQL、SQLite中数据库列类型的比较?(交叉映射))...
2023-11-28 数据库问题
20

plist 或 sqlite
plist or sqlite(plist 或 sqlite)...
2023-10-26 数据库问题
3