单个.exe文件太大

问题描述 投票:0回答:2

我正在尝试在 C# 中创建单个可执行文件。但是我不喜欢文件有多大。一个简单的 Hello World 程序本身就有 20mb。有没有一个好的方法来缩小它的大小,也许通过删除程序不使用的东西。

下面是我的 Hello World 测试程序的 .csproj 文件。我还想声明我正在发布模式下编辑,如果这有影响的话

    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>

    <PublishSingleFile>true</PublishSingleFile>
    <PublishTrimmed>true</PublishTrimmed>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
c# exe .net-5
2个回答
7
投票

首先,如果可以的话,尝试升级到 .NET 6。修剪后的独立单文件 .NET 6 Hello World 控制台应用程序约为 11MB,而不是 20MB。

要更进一步,您可以尝试禁用框架功能:https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trimming-options#trimming-framework-library-features

您可以压缩程序集,尽管这会在运行时带来性能成本:https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file/overview#compress-assemblies-in-single -文件应用程序

如果您需要更进一步,很快您就可以使用 NativeAOT 进行 AOT 编译;这将构建更小的可执行文件,因为它们不需要包含 JIT 编译器。 NativeAOT 将随 .NET 7 一起发布;请关注 .NET 7 预览版以获取说明。

您可能会发现有关该主题的这篇博客文章很有用:https://www.awise.us/2021/06/05/smallest-dotnet.html


0
投票

此命令发布适用于 Windows 64 位的 .NET 应用程序,创建单个可执行文件,而不在应用程序中包含 .NET 运行时。这有助于减少分发的可执行文件的大小。

dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained false
© www.soinside.com 2019 - 2024. All rights reserved.