Avaloniaでプロジェクト作成時・開発開始時の困りごと
#Avalonia #技術情報
実装サンプルは こちら
Linuxで dotnet run が失敗する
font周りのトラブル と言及されているが…いまいちわからない
とりあえず、LANG=C dotnet run すれば動くので、今はそれで応急とする
フォルダ・NameSpace構成の変更がうまく行かない
フツーに以下をしただけでは、「xamlのエラー」「MainWindowのInitializeComponent()が無いとコンパイルエラー」で、ビルド出来ず動かない。
1. フォルダを作成し既存のソースを移
2. クラス・xamlの"namespace"部分(と思しきところ)を変更
どうも「auto source generator error...」的なインジケートが出てるので、ここらへん関連だと思うが…。
素のAvaloniaでは「MessageBox」がない
ので、 https://github.com/AvaloniaCommunity/MessageBox.Avalonia をNugetで追加した。
Textbox(TextArea)と、MessageBoxのTextのフォントが豆腐になる
issus/1
GenericHostを適用できない
おそらくは「技術的には可能です」な「自分が出来ないだけ」だろうとは思う
2020年に「本家で対応できんか?」というissueあがっている
指摘の通り「AppBuilder と IHostBuilderという似た概念を二重でビルドすることになる」ので統合が待たれる
試験的に、このissue内のサンプルソースをコピペで実装してみる
AvaloniaのWindowが閉じられても、GenericHostが終了しない
上記のサンプルソースをコピペしたが、自動的には終わってくれない
GenericHostライフサイクルのシャットダウンタイミングを確認すると「 Environment.Exitが呼び出された時」とあるので、応急処置的にWindowのOnClosed()イベントで呼ぶ
AvaloniaのViewModelにGenericHostのDIによる依存性注入が出来ない
異なった概念なので「自然な形」では出来なそう
よく似たことに困っている人 は居る模様(この人はWindow自体をDIするにはどうしたら良いか、だが)
もう正直めんどくさくなったので、暫定処置として IHostBuilder.Build().Run() して、そのConfigureでDI登録で IHostedService を実装したクラスを作り、この中で StartWithClassicDesktopLifetime() して片付けた
WinFormsでGenericHost扱いにするためのやり方と一緒
「新しいプロジェクトの作成」で作った Program.cs の BuildAvaloniaApp() メソッドを維持する必要がある
VisualStudioのAvaloniaデザイナが上記メソッドを期待している(なぜ?)
自分のプログラムでは自作の IHostedService 実装クラスに「AvaloniaApp作成責務」を移動しているので、デザイナが動かなくなった
しゃーなしで、移動先のメソッドを呼ぶWrapperメソッドをProgramクラスにStaticで持たせるように
なんか…ダーティに感じるのでうまく解決したい