笔记
依赖环境
-
Visual Studio 2022
-
Avalonia for Visual Studio 2022扩展
参考资料
官网:https://avaloniaui.net/
文档:https://docs.avaloniaui.net/
示例:https://play.avaloniaui.net/
入门参考
参考网址:https://blog.csdn.net/u012563853/article/details/128020416
注意:使用Avalonia 0.10.18版本,暂时不要升级到11.0.0.4版本。11版本
为Avalonia应用创建快捷方式和图标
Avalonia应用编译以后会在BIN文件夹下生成一个与项目同名的文件,在终端下执行这个文件,其实就能打开这个应用
以你应用名称创建一个.desktop文件,.desktop文件的内容:
[Desktop Entry]
Name=TodoList
Type=Application
Exec=/应用程序路径/应用程序名称
Icon=/应用程序路径/应用程序图标名称
Terminal=true
Categories=Office
其实Name是应用的名称,
Type表明类型,一般都是Application
Exec是你的应用的具体路径
Icon是应用的图标,用来在桌面上显示,一般png格式或ico。
Terminal表明是否为终端软件,Avalonia应用设置为true,不然的话会打开又立马关闭。
Categories用来标识是什么类型的应用
打包命令
dpkg -b "packTest"(要打包的目录) "ZBGJAvaProduct.deb"(安装包名称)
安装命令
dpkg -i --force-overwrite ZBGJAvaProduct.deb(安装包名称)
其它常用的Linux命令
sudo: 使用管理员权限
chmod 777:修改文件权限
ls:显示文件或目录 (ls -l: 列出文件详细信息; ls -a: 显示所有文件)
mkdir:创建目录
cd:切换目录
echo:创建带有内容的文件
cat:查看文件内容
rm:删除文件
ln -s: 软连接
常见问题
字体问题:国产系统默认情况下没有Windows的字体
1、运行报错‘Default Font Family can’t null or empty’
需要实现IFontManagerImpl一个自定义类
解决方案参考地址:https://www.cnblogs.com/joyandjoys/p/14346935.html
2、Aspose生成的pdf文件乱码
windows系统下和国产系统下字体路径不同
Aspose.Words.Document doc = GetDocument(srcFilePath);
//获取字体路径
string fontsfolder = string.Format(@"{0}/fonts/", System.Environment.
GetEnvironmentVariable("WINDIR"));
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
fontsfolder = "/usr/share/fonts";
}
加载字体
FontSettings.DefaultInstance.SetFontsFolder(fontsfolder, true);
doc.FontSettings = FontSettings.DefaultInstance;
样式问题:表格控件无法加载
原因是需要加载DataGrid或TreeDataGrid的样式文件,在APP.xaml里面增加下面一段话
<Application.Styles>
<StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Default.xaml"/>
<StyleInclude Source="avares://Avalonia.Controls.TreeDataGrid/Themes/Fluent.axaml"/>
</Application.Styles>
问题4:Aspose生成的pdf文件乱码
windows系统下和国产系统下字体路径不同
路径问题:国产系统下路径不正常的问题
程序在Windows系统下测试良好,但是在Ubuntu系统上却无法正常运行,看了一下,是文件路径的问题。
因为客户端在Windows下运行的,客户端上传的路径里的“”需要换成“/”。写了一个路径转换函数:
问题6:上传文件乱码问题
压缩文件里面会出现右斜杠
当window客户端上传后,在国产操作系统下载,会导致解压缩失败。因为window上传的路径“/”路径在Linux下无法识别,需要统一用linux系统下的路径“/”
问题7:线程方法访问UI控件,需要用UIThread.InvokeAsync
Dispatcher.UIThread.InvokeAsync(new Action(() =>
{}));
问题8:压缩文件错误
(1)当window客户端上传后,在国产操作系统下载,会导致解压缩失败。因为window上传的路径“/”路径在Linux下无法识别,需要统一用linux系统下的路径“\”
Path.GetFileName(file) + Path.AltDirectorySeparatorChar;
编码问题:因为window下面默认编码是GB2312,linux下面默认编码是UTF-8,会导致两边显示不一致
1、代码文件在window下显示正常,在linux下面显示乱码
解决方法:工程里面添加一个EditorConfig文件
root = true
# All files
[*]
indent_style = space
# Xml files
[*.xml]
indent_size = 2
[*]
charset = utf-8
2、压缩文件在windows下如果有中文命名的文件名称,在Linux下面会显示乱码
ZipEntry.IsUnicodeText= true;