与您习惯以构建作为创建输出的标准的 .NET 4.x 不同,.NET Core(和 .NET 5)认为构建和发布非常不同。
巨大的 (70MB) 大小是因为发布者假设您的目标没有安装任何形式的 .NET Framework,因此将其与您的项目捆绑在一起。
您可以将发布行更改为
dotnet publish -r win-x64 --self-contained false
这将单独创建 .NET Core 标准 - 一个 .dll(您的应用程序)、一个 .exe(运行应用程序)、一些用于设置的 .json 文件和一个 .pdb 文件用于调试符号。
要将应用程序更改为您习惯的 .NET Framework 标准输出,请在文本编辑器中打开 .csproj 文件,并在
<TargetFramework>netx.x</TargetFramework>
行,添加
<PublishSingleFile>true</PublishSingleFile>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
然后重新运行发布命令。这将在publish 目录中生成一个.exe 和一个.pdb(您可以安全地删除.pdb 文件)。
注意:由于您已包含--self-contained false,因此目标需要安装指定版本的.NET Framework(在您的.csproj 文件中指定的版本)。虽然目前大多数 Windows 10 设备(通常位于 C:\Windows\Microsoft.NET\Framework 或 C:\Program Files\dotnet\)上都安装了许多版本的 .NET Framework,但 .NET Core / .NET 5 运行时并不常见(尽管可能会分发在不久的将来通过 Windows 更新),因此如果您的.exe 的收件人没有它,可能需要一次性下载。
虽然 .NET Core / .NET 5 生成的二进制文件更大(尽管大约 150kb - 不是 50MB),但它们的运行速度明显快于 .NET Framework 4.x 对应物。