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

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
腾讯CDC
G
Google Developers Blog
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
有赞技术团队
有赞技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
美团技术团队
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志

博客园 - 丹心石

数据字节位改变 锁定鼠标光标到指定屏幕 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