如何在Windows系统编译Avalonia

325 阅读1分钟

本篇文章简要介绍如何在Windows系统上编译Avalonia。编译的步骤主要是参考了github.com/AvaloniaUI/…(有少许差异)。整体来说,整个编译过程并不复杂,耗时大约在1-4小时。知道如何编译Avalonia后,如果你想为这个开源项目贡献代码,就可以自己验证代码的有效性了。

准备工作

编译源码的机器需要提前安装必要的工具和SDK。括号里是我编译源代码时用到的版本。

  1. Windows OS(Windows 11 22H2)
  2. Git(2.43.0
  3. Avalonia源代码(11.0.6)
  4. Dotnet SDK(7.0.404
  5. Dotnet runtime(6.0.25
  6. Android SDK platform package(33
  7. JDK(Microsoft OpenJDK 17
  8. Nodejs(20.10.0

源代码编译

如果没有特殊说明,编译用到的命令都在cmd里执行即可。

准备源代码

在git shell里执行以下命令

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

cd Avalonia

git checkout 11.0.6

git submodule update --init

安装workload

dotnet workload install android ios wasm-tools wasm-experimental

安装Tizen Workload

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

注意:从Windows 10开始,Windows系统都预先安装了curl,详见curl shipped by Microsoft。如果你使用的是早于Windows 10的Windows系统,需要预先安装curl。

在Powershell里执行上面下载的Powershell脚本

workload-install.ps1

编译

安装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.Andriod.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.Win32.Interoperability.11.0.6.nupkg
  • Avalonia.X11.11.0.6.nupkg
  • Avalonia.iOS.11.0.6.nupkg

比较有意思的是在Windows平台编译产生了一些和其他平台相关的一些nupkg,比如

  • Avalonia.Andriod.11.0.6.nupkg
  • Avalonia.LinuxFramebuffer.11.0.6.nupkg
  • Avalonia.X11.11.0.6.nupkg
  • Avalonia.iOS.11.0.6.nupkg