惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
Y
Y Combinator Blog
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
博客园_首页
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
宝玉的分享
宝玉的分享

博客园 - 丹心石

数据字节位改变 锁定鼠标光标到指定屏幕 WPF 访问WebAPI Avalonia 避坑经验总结 Avalonia 窗口与配置 数据处理与转换 信号与槽 Qt 串口通信 Avalonia 设计时DataContext数据山下文和WPF设计时DataContext数据上下文 Avalonia Ursa 使用 Avalonia-消息对话框 Avalonia-数据绑定 Avalonia-样式 阿里图标库iconfont 在Avalonia 中的使用 Avalonia MVVM Avlonia 自定义控件 Sqlite EF For ConsoleCore Sqlite EF CodeFirst For WPF win10 环境变量不可编辑 WCF-双工通讯 MahMetro 框架学习 由于缺少调试目标“xxx”Visual Studio 无法开始调试。或者响应地设置outputpath和AssemblyName 属性 WPF 应用程序本地化-资源文件方式 FastReport 行高设置实现行高随内容自动变化
Avalonia 程序打包成Linux平台的运行程序
丹心石 · 2026-03-13 · via 博客园 - 丹心石

1.安装Parcel

dotnet tool install --global AvaloniaUI.Parcel

2.简化.csproj

一个干净的Avalonia MVVM项目的.csproj应该是这样的:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    
    <!-- 这些打包属性是给 Parcel 读取的,不是必需的 -->
    <ApplicationName>AvaloniaMvvmNew</ApplicationName>
    <PackageName>avalonia-mvvm-new</PackageName>
    <AssemblyVersion>1.0.0</AssemblyVersion>
  </PropertyGroup>

  <!-- 只需要 Avalonia 相关的包,不要加 Parcel 包引用 -->
  <ItemGroup>
    <PackageReference Include="Avalonia" Version="11.2.3" />
    <PackageReference Include="Avalonia.Desktop" Version="11.2.3" />
    <PackageReference Include="Avalonia.Themes.Fluent" Version="11.2.3" />
    <PackageReference Include="Avalonia.Fonts.Inter" Version="11.2.3" />
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
  </ItemGroup>
</Project>

注意事项:

Parcel 是.Net全局工具,不是Nuget包

.包名是 AvaloniaUI.Parcel 不是Avalonia.Ide 如果提示这个错误可能是包名引用错误
.它是通过 dotnet tool install安装的,而不是通过 添加到项目中的。

MSBuild 集成方式

。Parecel 的打包功能是铜鼓偶命令行或图形界面直接调用的
。不需要在.csproj中添加特殊的包引用

使用正确的打包命令:

既然Parcel 是独立的工具,打包的命令应该是这样的:

# 1. 进入项目目录
cd F:\Demos\AvaloniaDemos\t3\AvaloniaMvvmNew
# 2. 先发布项目(生成可执行文件)
dotnet publish -c Release -r linux-x64 --self-contained true -o ./publish/linux-x64
# 3. 使用 parcel 命令打包(不是 dotnet build -t:ParcelBuildDeb)
parcel pack ./publish/linux-x64 --output ./installers --platform linux --format deb

image

image

进入指定目录下可以看到:

image