dotnet publish 生成许多我的应用程序未使用的 DLL

问题描述

我正在尝试优化我的应用程序包的大小。针对 .NET5.0

当我运行以下命令时:

dotnet new console -o MyConsole
cd MyConsole
dotnet publish -r win-x64 -c release --self-contained

我得到了一个空白控制台应用程序的可分发版本。

如果我导航到 MyConsole/bin/release/net5.0/win-x64/ 文件夹,我会看到生成了很多 DLL。那些甚至不被空白控制台应用程序使用的。

分发我的应用程序是否需要所有 DLL?

是否有一种简单的方法可以删除我不需要的 DLL?

我可以从 MyConsole.deps.json 中一一删除 DLL,直到可执行文件不再起作用,但这似乎不对。

MSFT docs 提到了更大的部署,但是否可以对其进行优化?类似的SO

解决方法

编辑:尝试使用

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

来源:https://dotnetcoretutorials.com/2019/06/20/publishing-a-single-exe-file-in-net-core-3-0/

您所引用的是一个非常不同的 .NET 核心 Web 应用程序。您拥有的是 .NET 控制台应用程序,但是,一旦您构建应用程序,根据您正在构建的内容,您可能只需要 /bin/release 文件夹中的 .exe 文件。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...