如何在Linux系统编译Avalonia

396 阅读1分钟

本篇文章简要介绍如何在Linux系统上编译Avalonia。编译的步骤主要是参考了github.com/AvaloniaUI/…github.com/AvaloniaUI/…。本篇文章以Ubuntu 22.04为例讲解整个源码编译的过程。

准备工作

安装git

sudo apt install git

安装nodejs

Ubuntu 22.04自带的nodejs版本(10.19.0)太低,无法成功编译Avalonia。可以去nodejs官网下载最新的build(我使用的版本是20.10.0),解压后把bin目录设置到环境变量PATH即可。

下载dotnet-install script

curl https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh -o dotnet-install.sh

安装Dotnet SDK 7.0.404

./dotnet-install.sh --version 7.0.404

默认情况下,dotnet-install.sh会把dotnet下载到用户Home目录的.dotnet目录下。执行下面的命令,让其他脚本和工具能够找到dotnet

export DOTNET_ROOT=$HOME/.dotnet

安装Dotnet runtime 6.0.25

./dotnet-install.sh --runtime dotnet --version 6.0.25

源代码编译

准备源代码

git clone https://github.com/AvaloniaUI/Avalonia.git

cd Avalonia

git checkout 11.0.6

git submodule update --init

安装workload

dotnet workload install wasm-tools wasm-experimental

安装Tizen Workload

curl https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.sh -o workload-install.sh

bash workload-install.sh

编译

安装Nuke

dotnet tool install --global Nuke.GlobalTool --version 6.2.1

编译源码

nuke --target Compile --configuration Release

运行测试

nuke --target RunTests --configuration Release

生成nupkg

nuke --target Package --configuration Release

编译结果

编译的最终输出就是一些nupkg文件

  • Avalonia.11.0.6.nupkg
  • Avalonia.Browser.11.0.6.nupkg
  • Avalonia.Browser.Blazor.11.0.6.nupkg
  • Avalonia.Controls.ColorPicker.11.0.6.nupkg
  • Avalonia.Controls.DataGrid.11.0.6.nupkg
  • Avalonia.Controls.ItemsRepeater.11.0.6.nupkg
  • Avalonia.Desktop.11.0.6.nupkg
  • Avalonia.Diagnostics.11.0.6.nupkg
  • Avalonia.Direct2D1.11.0.6.nupkg
  • Avalonia.Fonts.Inter.11.0.6.nupkg
  • Avalonia.FreeDesktop.11.0.6.nupkg
  • Avalonia.Headless.11.0.6.nupkg
  • Avalonia.Headless.NUnit.11.0.6.nupkg
  • Avalonia.Headless.Vnc.11.0.6.nupkg
  • Avalonia.Headless.XUnit.11.0.6.nupkg
  • Avalonia.LinuxFramebuffer.11.0.6.nupkg
  • Avalonia.Markup.Xaml.Loader.11.0.6.nupkg
  • Avalonia.ReactiveUI.11.0.6.nupkg
  • Avalonia.Remote.Protocol.11.0.6.nupkg
  • Avalonia.Skia.11.0.6.nupkg
  • Avalonia.Themes.Fluent.11.0.6.nupkg
  • Avalonia.Themes.Simple.11.0.6.nupkg
  • Avalonia.Win32.11.0.6.nupkg
  • Avalonia.X11.11.0.6.nupkg

有意思的是,在Linux系统下也编译出了Avalonia.Win32.11.0.6.nupkg。