前言
https://docs.avaloniaui.net/zh-Hans/docs/get-started/install
说一下优缺点
优点
- 可以开发跨平台应用。
- 应用的启动速度还不错。
- 界面的语法更现代化(样式动画更易用)。
缺点
文档较少。
默认不支持热重载。支持热重载的库使用起来也不便捷。
打包程序较大。
本身打包文件就大。
在某些场景比如加载网页,WPF能直接使用系统上的Webview2,而它必须嵌入浏览器内核。
窗口透明穿透目前还没找到实现的方法,不知道是否支持。
建议
如果不跨平台,建议使用WPF。
跨平台的通用型应用可以使用Avalonia。
安装 Avalonia UI 模板
开始使用 Avalonia 的最佳方式是使用模板创建一个应用程序。
要安装 Avalonia 模板,请运行以下命令:
1 | dotnet new install Avalonia.Templates |
备注
对于 .NET 6.0 及更早版本,请将
install
替换为--install
查看dotnet版本
1 | dotnet --version |
要列出已安装的模板,请运行以下命令:
1 | dotnet new list |
安装开发扩展
也可以在线下载
https://marketplace.visualstudio.com/items?itemName=AvaloniaTeam.AvaloniaVS
项目创建及运行
创建项目
1 | dotnet new avalonia.mvvm -o z-avalonia-demo01 |
运行
1 | cd z-avalonia-demo01 |
开发过程中我们可以F12
进行调试。
创建项目如果报错
当前 .NET SDK 不支持将 .NET 8.0 设置为目标。请将 .NET 7.0 或更低版本设置为目标,或使用支持 .NET 8.0 的 .NET SDK 版本。
查看dotnet版本
1 | dotnet --version |
比如我的是7.0
打开项目目录的.csproj
文件
把
1 | <TargetFramework>net8.0</TargetFramework> |
改为
1 | <TargetFramework>net7.0</TargetFramework> |
这样就能运行了。
打包发布
发布命令
发布单文件
1 | dotnet publish -c Release -r win-x64 /p:PublishSingleFile=true /p:PublishTrimmed=true /p:PublishReadyToRun=true /p:PublishReadyToRunShowWarnings=true /p:UseAppHost=true /p:IncludeNativeLibrariesForSelfExtract=true /p:SelfContained=true --self-contained true |
发布多文件
1 | dotnet publish -c Release -r win-x64 /p:PublishSingleFile=false /p:PublishTrimmed=true /p:PublishReadyToRun=true /p:PublishReadyToRunShowWarnings=true /p:UseAppHost=true /p:IncludeNativeLibrariesForSelfExtract=true /p:SelfContained=true --self-contained true |
参数说明
其中,-r
参数表示发布目标平台,win-x64
代表 Windows 64 位。你可以根据需要替换为其他平台。
-c Release
:指定发布的配置为 Release 模式,这将优化应用程序的性能和大小。-r win-x64
:指定目标运行时为 Windows x64 平台,发布输出将为该平台准备。/p:PublishSingleFile=true
:设置发布输出为单个可执行文件,将应用程序和其依赖项打包为一个文件。/p:PublishTrimmed=true
:启用发布优化,删除未使用的依赖项和代码来减小应用程序的大小。/p:PublishReadyToRun=true
:使用 ReadyToRun 编译器进行发布,可以提高应用程序的启动性能。/p:PublishReadyToRunShowWarnings=true
:在使用 ReadyToRun 编译器进行发布时显示警告信息。/p:IncludeNativeLibrariesForSelfExtract=true
:包含本机库以支持自解压功能,以便在运行时自动提取依赖项。
发布后会在项目目录下的
1 | bin\Release\net7.0\win-x64\publish |