### VS安裝Avalonia模版 執行以下命令,安裝Avalonia模版(.NET6及之前版本使用--install): ```bash dotnet new install Avalonia.Templates ``` 執行後,會安裝如下模版: ``` 模板名 短名稱 語言 標記 Avalon ...
VS安裝Avalonia模版
執行以下命令,安裝Avalonia模版(.NET6及之前版本使用--install):
dotnet new install Avalonia.Templates
執行後,會安裝如下模版:
模板名 短名稱 語言 標記
----------------------------------- ------------------------- ------- -----------------------------------------
Avalonia .NET App avalonia.app [C#],F# Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia .NET MVVM App avalonia.mvvm [C#],F# Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Cross Platform Application avalonia.xplat [C#],F# Desktop/Xaml/Avalonia/Web/Mobile
Avalonia Resource Dictionary avalonia.resource Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Styles avalonia.styles Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia TemplatedControl avalonia.templatedcontrol [C#],F# Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia UserControl avalonia.usercontrol [C#],F# Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Window avalonia.window [C#],F# Desktop/Xaml/Avalonia/Windows/Linux/macOS
創建Avalonia應用併發布
使用如下命令創建一個Avalonia MVVM應用:
dotnet new avalonia.mvvm
將程式發佈到linux-x64平臺,publish參數參考鏈接:
dotnet publish -r linux-x64 --self-contained
OpenKylin安裝.NET運行時
安裝aspnetcore運行時即可,aspnetcore運行時包含了.NET運行時,安裝包我使用的ubuntu 18.04版本的。安裝教程參考微軟官方文檔。
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install aspnetcore-runtime-6.0
在OpenKylin上運行應用
首先把發佈的publish文件夾壓縮後下載到OpenKylin上,我使用的林大佬這篇文章中提供的辦法。使用dotnet serve開啟一個文件伺服器:
dotnet tool install --global dotnet-serve
dotnet serve -p 1007 -a 0.0.0.0
解壓後進入文件所在目錄,修改下執行文件的許可權,執行文件為何項目名稱同名的不帶尾碼的文件:
chmod 777 ./執行文件
然後運行該文件:
./執行文件
然後就報錯了...Default font family name can't be null or empty,這個問題討論很久了,參考這個Issue。
預設字體問題處理
從上述Issue中,我看到了幾個解決方案,首先,註冊自定義字體管理器在Avalonia11中不可用了,因為IFontManagerImpl介面改成Internal了。我嘗試的可行的解決方案有如下幾個:
方法1:修改環境變數LANG的值:export LANG=en_US.UTF-8
;
方法2:設置系統語言為英語;
方法3:啟動應用時使用命令:LC_ALL=C ./執行文件
;
方法4:Program.cs的BuildAvaloniaApp()方法中指定Linux系統的預設字體名;
以上幾個辦法均可行,我採用的第四個方法,OpenKylin的預設字體可以到設置中查看:
public static AppBuilder BuildAvaloniaApp()
{
FontManagerOptions options = new();
if (OperatingSystem.IsLinux())
{
options.DefaultFamilyName = "Noto Sans CJK SC";
}
else if (OperatingSystem.IsMacOS())
{
options.DefaultFamilyName = "<macOS Default Font Family Name Here>";
}
// No need to set default for Windows
return AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace()
.UseReactiveUI()
.With(options);
}
修改程式後,再次發佈併在OpenKylin上執行,就成功了。我試了下Avalonia的開源項目Core2D,也是可以的: