我已经在Dotnet-core中编写了一个相当简单的命令行工具。它执行一些fileIO并调用某些Web-API。我想以二进制形式将其发布到多个平台。我当时以为可能是NuGet软件包。但是我坚持要构建可发布的二进制文件。
当我运行“ dotnet publish”时 输出文件夹仅包含DLL。
例如,当我运行“ dotnet publish --runtime win7-x64”时 输出文件夹中确实包含可执行文件。但是,它似乎还包含约67MB的DLL和其他来自程序集/命名空间的二进制文件,我可以肯定我没有使用过。 (也许我是间接使用它们的?)
我可以将'win7-x64'换成其他平台,例如ubuntu或osx。该命令有效,并且生成的输出在这些平台上正确执行。我并不是只想为一个可能只有300行代码的工具提供那么多MB。感觉我使用的框架不正确。
如何以二进制格式紧凑地发布我的工具?
提前谢谢! -奔
答案 0 :(得分:1)
您已选择“自包含”选项。在这种情况下,67 MB包含整个.NET核心框架。还可以选择在不包含所有.NET框架的情况下部署应用程序。但是目标系统上必须安装有.NET核心。我认为他们将添加另一个选项以将其部署到摇晃的单个可执行文件中,并且在.NET Core 3中其大小会较小。
https://docs.microsoft.com/en-us/dotnet/core/deploying/
如果您的工具适用于开发人员,则可以将其发布为.NET全局工具:https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools-how-to-create