当前位置:   article > 正文

Avalonia 运行在Ubuntu20.04上,记录发布到运行的过程,已解决默认字体问题_avalonia ubuntu

avalonia ubuntu

目录

1.安装.NET 8.0 环境

2.发布Avalonia程序

3.默认字体问题解决


Demo程序下载(开箱即用):https://download.csdn.net/download/rotion135/89048937

1.安装.NET 8.0 环境

下载微软dotnet安装脚本:sudo wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

运行此脚本之前,请确保授予此脚本作为可执行文件运行的权限:

sudo chmod +x ./dotnet-install.sh

接下来是安装命令:

默认最新安装:sudo ./dotnet-install.sh --version latest

安装运行时(非SDK):sudo ./dotnet-install.sh --version latest --runtime aspnetcore

制定版本安装:sudo ./dotnet-install.sh --channel 8.0

我使用的是制定版本安装,红框内是安装的目录,后面设置环境变量需要.

重要环节:设置系统环境变量

1.对所有用户生效要使环境变量对所有用户有效,可以修改profile文件:sudo vim /etc/profile

2.当前用户 : sudo vim $HOME/profile

$HOME-- 一般就是路径 /home/用户名/ 

不同的Shell,对应不同的配置文件,自行对应

  • Bash Shell: ~/.bash_profile 或 ~/.bashrc
  • Korn Shell:~/.kshrc 或 .profile
  • Z Shell:~/.zshrc 或 .zprofile

在文件中末尾添加两行:

此变量设置为 .NET 安装到的文件夹,如 $HOME/.dotnet:

export DOTNET_ROOT=$HOME/.dotnet

PATH

此变量应同时包含 DOTNET_ROOT 文件夹和 DOTNET_ROOT/tools 文件夹:

export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

最后保存,重启/注销 即可生效。

测试安装是否正确,命令行输入:dotnet 命令试试,运行程序也是使用 : dotnet 程序名

2.发布Avalonia程序

发布配置:

得到配置包,并上传到Ubuntu系统:

上传使用工具即可,如NxShell、Xftp等等

3.默认字体问题解决

Linux默认字体非中文,如果没有处理默认字体的问题,则会出现以下报错:

Default font family can't be null or empty

如何解决?

只需要增加默认字体的设置即可

项目添加字体文件,并设置为资源:

增加两个类文件:

FontSettings

FontBuilderExtensions

  1. public class FontSettings
  2. {
  3. public string DefaultFontFamily = "fonts:MyDesignFontFamilies#Alibaba PuHuiTi 2.0";
  4. public Uri Key { get; set; } = new Uri("fonts:MyDesignFontFamilies", UriKind.Absolute);
  5. public Uri Source { get; set; } = new Uri("avares://LS.AvaloniaClient.Desktop/Assets/Fonts/AliBaba", UriKind.Absolute);
  6. }
  1. public static class FontBuilderExtensions
  2. {
  3. public static AppBuilder UseFontAlibaba([DisallowNull] this AppBuilder builder, Action<FontSettings>? configDelegate = default)
  4. {
  5. var setting = new FontSettings();
  6. configDelegate?.Invoke(setting);
  7. return builder.With(new FontManagerOptions
  8. {
  9. DefaultFamilyName = setting.DefaultFontFamily,
  10. FontFallbacks = new[]
  11. {
  12. new FontFallback
  13. {
  14. FontFamily = new FontFamily(setting.DefaultFontFamily)
  15. }
  16. }
  17. }).ConfigureFonts(manager => manager.AddFontCollection(new EmbeddedFontCollection(setting.Key, setting.Source)));
  18. }
  19. }

然后在Program.cs中调用:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/743665
推荐阅读
相关标签
  

闽ICP备14008679号