首页 > 解决方案 > .NET Core:发布自包含应用程序时,将 .exe 与其他库分开

问题描述

当你现在发布一个 .NET Core 自包含应用程序时,你的 exe 与所有 Nuget 包一起位于几十个 .NET Core 运行时库的中间。

MyApp/
--ct/
--de/
--es/
...
--zh-Hant/
--Accessibility.dll
--api-ms-win-core-console.dll
... A dozen other .dlls
--MyApp.dll
--MyApp.exe
... Even more .dlls

我想设置发布以便组织这些文件,就像这样

MyApp/
--netcoreapp3.0/
--nuget/
--MyApp.dll
--MyApp.exe

甚至

MyApp.exe
MyApp/
--netcoreapp3.0/
--nuget/
--MyApp.dll

或者,也许有一种方法可以更改 .csproj<TargetFramework>标记中框架库的目录?这样,我可以使用依赖于框架的发布选项并删除所有重复文件。

标签: .net-core

解决方案


如果没有使用依赖于框架的发布选项的限制,您可以PublishSingleFile使用true.

您的发布命令将是

dotnet publish -c Release -r win-x64 /p:PublishSingleFile=true

然后在您的发布文件夹中,您将找到可执行文件的“更干净”结果,以及一些配置文件(如 appsettings.json 或 web.config)。没有 nuget 或运行时 dll。


推荐阅读