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

目录

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

    public class FontSettings
    {
        public string DefaultFontFamily = "fonts:MyDesignFontFamilies#Alibaba PuHuiTi 2.0";
        public Uri Key { get; set; } = new Uri("fonts:MyDesignFontFamilies", UriKind.Absolute);
        public Uri Source { get; set; } = new Uri("avares://LS.AvaloniaClient.Desktop/Assets/Fonts/AliBaba", UriKind.Absolute);
    }
 public static class FontBuilderExtensions
 {
     public static AppBuilder UseFontAlibaba([DisallowNull] this AppBuilder builder, Action<FontSettings>? configDelegate = default)
     {
         var setting = new FontSettings();
         configDelegate?.Invoke(setting);

         return builder.With(new FontManagerOptions
         {
             DefaultFamilyName = setting.DefaultFontFamily,
             FontFallbacks = new[]
             {
             new FontFallback
             {
                 FontFamily = new FontFamily(setting.DefaultFontFamily)
             }
         }
         }).ConfigureFonts(manager => manager.AddFontCollection(new EmbeddedFontCollection(setting.Key, setting.Source)));
     }
 }

然后在Program.cs中调用:

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rotion_深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值