建国外网站需要多少钱,免费企业网站模板psd,上海网站设计印刷拆除,wordpress胖子马一、openKylin简介
openKylin#xff08;开放麒麟#xff09; 社区是在开源、自愿、平等和协作的基础上#xff0c;由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立的一个开源社区#xff0c;致力于通过开源、开放的社区合作#xff…一、openKylin简介
openKylin开放麒麟 社区是在开源、自愿、平等和协作的基础上由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立的一个开源社区致力于通过开源、开放的社区合作构建桌面操作系统开源社区推动Linux开源技术及其软硬件生态繁荣发展。
“开放麒麟”openKylin是中国首个桌面操作系统开发者平台由国家工业信息安全发展研究中心等单位联合成立通过开放操作系统源代码的方式打造具有自主创新技术的开源桌面操作系统。
系统镜像下载地址https://www.openkylin.top/downloads/index-cn.html
二、Avalonia简介https://avaloniaui.net/
Avalonia是一个跨平台的.NET框架用于构建漂亮、现代的图形用户界面GUI。
使用Avalonia您可以从单个代码库创建适用于Windows、macOS、 Linux、iOS、Android和Web Assembly的原生应用程序。
Avalonia兼容所有支持.NET Standard 2.0的平台。 Avalonia官方支持下列平台 Windows 8 及更高版本虽然它也能在Windows 7上正常工作 macOS High Sierra 10.13 及更高版本
在Linux上下列发行版支持Avalonia Debian 9 (Stretch) 及更高版本 Ubuntu 16.04 及更高版本 Fedora 30 及更高版本
Avalonia11版本的中文官方文档地址https://docs.avaloniaui.net/zh-Hans/docs/next/welcome
随着信创、操作系统国产化替换的推广进程一些客户端项目也会有需要转移到Linux桌面的巨大的市场需求。
目前Linux下桌面程序开发的常见工具的有QT、Electron、Blazor。而现在WPF有了Avalonia的加持势必会在开发原生跨平台应用时更具有优势和性价比。
三、VS2022安装Avalonia开发插件
首先要安装visual studio2022的开发工具然后在顶部菜单扩展中打开管理扩展安装以下两个插件注意版本。 四、openKylin安装.NET Core环境
在openKylin官方网站上下载镜像后可用虚拟机进行安装安装后进入到桌面然后根据微软官方安装教程https://learn.microsoft.com/zh-cn/dotnet/core/install/linux通过脚本或者下载手动安装的方法进行安装.NET Core环境。
需要注意的是openKylin建立的登录账户不具备root权限所以在安装完成后需要配置以下环境变量否则运行dotnet时会提示没有这个命令提示。
具体方法是打开一个终端然后输入
sudo -s
输入密码回车然后终端会变成root权限的终端接着输入下面命令后回车
vim /etc/profile
会打开一个编辑界面我们按键盘的i键进入编辑模式然后到文档最后插入一行输入安装完.NET Core环境后提示的PATH路径比如
exprot PATH$PATH:/home/操作系统登录名/.dotnet
然后按esc输入:wq回车保存退出。随后重启OpenKylin系统重启后进入到桌面打开终端输入
dotnet --info
回车看到.NET Core的输出信息证明安装和配置.NET Core环境没有问题。 五、使用VS2022建立Avalonia桌面项目
在安装完Avalonia插件和模板后我们在创建新的项目的时候可以直接搜索avalonia关键字直接创建一个Avalonia C# Project会有创建向导按照向导提示一步一步创建完毕。 点击Create按钮后稍等片刻即可完成项目创建我们把创建的带Desktop结尾的项目设置为启动项目然后我们直接F5运行项目没有意外的话会看到一个界面一句英文提示。
六、解决Avalonia桌面项目在openKylin下报Default font name cant be null or empty的问题 我们把ViewModels\MainViewModel.cs把英文的文字改成中英混合的文字。
public string Greeting 欢迎使用 Avalonia!;
点击顶部菜单的生成发布选定内容目标运行时选linux-x64然后发布项目。 发布成功后我们把项目复制粘贴到openKylin的环境下然后在终端中定位到项目目录运行
dotnet StudyAvalonia.Desktop.dll 会看到经典的 Default font name cant be null or empty. 的错误提示 可见目前它对中文Linux系统的默认字体支持不太好有的解决办法是给操作系统设置为英文但我们国产系统目标群体绝大部分都需要使用中文环境。因此我们在开发项目时自己指定一下项目要用的默认字体来解决这个问题。
这里我们选用阿里巴巴的免费可商用的字体阿里巴巴普惠体https://www.alibabafonts.com/#/font
下载后按照下面目录结构放入字体文件也可自定义其它路径只要代码中的路径做出对应调整即可 这里记得把字体文件设置为AvaloniaResource 然后在Desktop项目中新建两个类文件 FontSettings.cs
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://StudyAvalonia.Desktop/Assets/Fonts/AliBaba, UriKind.Absolute);
}
AvaloniaAppBuilderExtensions.cs
public static class AvaloniaAppBuilderExtensions
{public static AppBuilder UseFontAlibaba([DisallowNull] this AppBuilder builder, ActionFontSettings? 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中注册一下新建的AppBuilder.UseFontAlibaba()
class Program
{// Initialization code. Dont use any Avalonia, third-party APIs or any// SynchronizationContext-reliant code before AppMain is called: things arent initialized// yet and stuff might break.[STAThread]public static void Main(string[] args) BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);// Avalonia configuration, dont remove; also used by visual designer.public static AppBuilder BuildAvaloniaApp() AppBuilder.ConfigureApp().UsePlatformDetect().UseFontAlibaba().WithInterFont().LogToTrace().UseReactiveUI();
} 然后在编译发布项目复制到OpenKylin系统中重新运行就可以看到可以正常的跑起来了界面显示中文没有问题了。 七、鸣谢
https://www.raokun.top/archives/ru-he-zai-avalonia11-zhong-she-zhi-zi-ding-yi-zi-ti
https://github.com/MicroSugarDeveloperOrg/AntDesign.Avalonia
八、转载请注明来源https://blog.csdn.net/wdw984/article/details/133575207