Avalonia应用打包发布需用dotnet publish生成自包含可执行文件,关键配置包括SelfContained=true、指定RuntimeIdentifier(如win-x64)及显式声明资源文件;发布后应在无.NET环境的干净系统中验证。

打包发布 Avalonia 应用,核心是用 dotnet publish 生成独立可执行文件,并确保运行时、资源和依赖项完整。不需要安装 .NET 运行时的“自包含”发布是最常用方式,适合分发给普通用户。
确认项目配置支持自包含发布
在 .csproj 文件中,确保已设置以下关键属性:
- SelfContained 设为 true(默认为 true,但显式声明更稳妥)
- PublishTrimmed 可选设为 true(减小体积,但需测试功能是否正常)
- RuntimeIdentifier 明确指定目标平台,例如:
win-x64、osx-x64、linux-x64 - Avalonia 相关 NuGet 包(如
Avalonia.Desktop)版本需 ≥ 11.0.0,以保证跨平台发布稳定性
命令行一键发布(推荐)
打开终端,进入项目根目录(含 .csproj 的文件夹),执行:
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishTrimmed=true -o ./publish-win
说明:
-
-c Release:使用 Release 配置编译 -
-r win-x64:目标 windows 64 位;换成osx-x64或linux-x64即可打包对应平台 -
--self-contained true:打包自带 .NET 运行时,用户无需预装 .NET -
-o ./publish-win:输出到当前目录下的 publish-win 文件夹
执行完成后,publish-win 文件夹内会有一个与项目名同名的 .exe 文件(Windows)或可执行二进制(macOS/Linux),双击即可运行。
处理图标、资源与配置文件
Avalonia 默认不自动复制非代码文件(如 app.xaml、图片、jsON 配置)。需在 .csproj 中显式声明:
<ItemGroup> <Content Include="Assets**" CopyToOutputDirectory="PreserveNewest" /> <Content Include="App.xaml" CopyToOutputDirectory="PreserveNewest" /> <Content Include="*.json" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup>
这样 dotnet publish 才会把它们一起放进发布目录。图标(AppIcon.ico 或 .icns)也需放入对应位置并引用,否则任务栏/ dock 显示默认图标。
可选:生成安装包(Windows)
若需更友好的分发体验(如开始菜单快捷方式、卸载项),可用第三方工具封装:
- Squirrel.Windows:轻量、开源,适合自动更新场景
- WiX Toolset 或 Advanced Installer:生成标准 MSI 安装包
- Nullsoft Scriptable Install System (NSIS):脚本化强,体积小,适合简单打包
注意:这些工具都作用于 dotnet publish 输出的文件夹,不是直接集成进构建流程——先发布,再打包。
基本上就这些。Avalonia 发布比 wpf 更接近 .NET Core 原生逻辑,只要 RuntimeIdentifier 和 SelfContained 配置对了,其余就是标准 dotnet publish 流程。不复杂但容易忽略图标和资源路径,建议发布后先在干净系统(没装 .NET 的机器)上试跑一次。