问题描述
我正在将一个中等大小的 Win10 应用程序 (.NET Framework 4.8) 迁移到 net5-windows。该解决方案包含大约 30 个项目。
虽然迁移过程在 Visual Studio 2019(版本 16.8.3)中工作得相当简单,但唯一的问题仍然是将所有内容打包到一个独立的 exe 中。我没有为 VS 中的项目条目苦苦挣扎,而是使用 Scott Hanselmann in his blog 讨论的命令行方法。这也很顺利,并生成了一个大约 140MB 大小的 exe。
仍然存在一个问题:并非所有系统 dll 都包含在 exe 中。必须手动将以下内容复制到所选目录:
如果没有这些 DLL,应用程序将无法运行。
我的问题:这种行为的原因是什么,如何将这些 dll 包含在自包含的 exe 中?
解决方法
要将系统 DLL 包含到单文件应用程序中,您应该对 IncludeNativeLibrariesForSelfExtract
命令使用 /p:IncludeNativeLibrariesForSelfExtract=true
属性或 dotnet publish
开关,如单文件发布 design document 中所述