gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:33:41 25 4
gpt4 key购买 nike

我在使用 .NET 5 发布单个文件可执行文件时遇到了一些问题。
事实上,它不包括可执行文件中的所有库,而是生成多个文件。
在我的示例中,我使用的是 SQLite (Microsoft.Data.Sqlite) 库,并且在编译后,不包括 e_sqlite3.dll。
相反,在输出文件夹中,它生成两个文件(不包括 pdb 文件):

> e_sqlite3.dll
> WpfApp1.exe

最佳答案

通过阅读 documentation

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)默认情况下不包含 native 库以确保良好的调试体验。
如果您想在应用程序可执行文件中包含它们,只需将此行添加到项目 (.csproj) 文件中即可。
<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>

关于wpf - .NET 5 从单个文件发布中排除了一些库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64778283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com