「.NET Core」に関する日記(2)

<前 次>

アンパンマンDBとWinUI 3

アンパンマンDB(記事更新)

来週の放送情報。

WinUI 3

Windows.Storage.ApplicationData使ったら使ったでエラーが起きました。
Unpackagedだと制限かかるみたいね。
昨日紹介した記事の後半に書いてあったConfig.Netならいけるのかな?

アンパンマンDBとWinUI 3

アンパンマンDB(記事更新)

Blu-rayの情報出るの待ってたんだけど、結局なさそうだったので、DVDの情報を追加。

WinUI 3(Today I Learned)


設定ファイルはどうするのかなって思って昔ながらのSettings.settings追加してみたらこの通り。
参照が足りないといわれつつも、必要な参照は候補に出ず、どうやら昔と同じ方法では動かないようです。

Recommended way of doing user settings with WindowsAppSDK 1.0? · microsoft/WindowsAppSDK · Discussion #1478
ここを見る感じ、UWPのやり方を踏襲して、Windows.Storage.ApplicationDataを使うのがいいのかな。

WinUI 3(Today I Learned)

DataGrid - Windows Community Toolkit | Microsoft Learn
ListView クラス (Microsoft.UI.Xaml.Controls) - Windows App SDK | Microsoft Learn
これまでDataGridViewとかでやっていたことをやろうと思ったら、素直に考えればDataGrid。
ただ、WinUI 3では標準機能ではなく、NuGetでライブラリとして導入する必要があります。
標準機能にあるListViewは、ヘッダ表示とかは期待できませんが、テンプレートをうまく使えば、複数列表示も可能です。
外部依存を不必要に増やすのはあまり面白くないし、いったんListViewを試してみようかな。

ドラゴンクエスト10とWinUI 3

ドラゴンクエスト10(ミフミン)

モンスターバトルロード 協力チャレンジバトル 防衛軍
モンスターバトルロード 協力チャレンジバトル (2024/9/11)|目覚めし冒険者の広場
ひとまずミフミンだけですが、一通りやってみました。
防衛軍とかパニガルムとか、通常のモンスターバトルロードとは違うバトルもありました。
ストーリーの都合上普通には挑めないパニガルムはもちろんのこと、なんとなくしんどそうで手を付けていなかった防衛軍も今回が初挑戦でした。
究極邪教司祭とフラウソンが特に強かったですね。
究極邪教司祭に関しては前半戦がぬるかったので油断もあったかと思うのですが、フラウソンに関しては、立ち回りを理解していないと生き返ったそばから殺されていく感じ。

ピコピコハンマー
そんなわけで、イベントの報酬でアイテムも交換してきました。
以前の協力チャレンジバトルには参加してなかったので、過去の交換アイテムから見た目が面白そうなのを。

他の写真は以下から。
写真置き場「2024/09/22」

WinUI 3(Today I Learned)

Windows Controls and patterns - Windows app development - Windows apps | Microsoft Learn
このあたり見ながら、レイアウト関連いろいろ試してます。
Two-pane viewは、レスポンシブデザインっぽいことをできるやつ。
Split viewは、横から別画面がにゅっと出てきて、元の画面にかぶさる(or並ぶ)やつ。
Split viewのInlineは切り替え時のアニメーションがおかしくなってるから、コンパクトサイズ0のCompactInlineで実装する必要がありそう。いずれ直るかもだけど。

それとは別になるけど、
2 ページ間でのピア ツー ピアのナビゲーション - Windows apps | Microsoft Learn
完全に別画面に切り替えるならWPFのころから使えたPageをFrameに出す感じですね。

WinUI 3(Today I Learned)

MediaPlayerElement クラス (Windows.UI.Xaml.Controls) - Windows UWP applications | Microsoft Learn
WinUI 3で動画再生するにはMediaPlayerElementを使えばいいみたい。
メディアプレイヤーを作りたければメディアプレイヤーを使う、わかりやすくていいね!
ただ、1コマ戻す機能が1/24秒固定だったり、妙なところで不便さがある感じ。
1コマ進めるほうはちゃんと1コマのようだけど。

WinUI 3

埋め込みリソースから画像を表示する方法がわからん。
実行ファイルやDLLと一緒にファイルとして配置したものから表示するのは簡単にできたけど。
本来はパッケージ化して使うものだからファイルとして配置しても大丈夫ってことなのかな。
非パッケージ化で使いたいんだけどな。

WinUI 3

高DPI対応、そもそも古いフレームワークで対応しようとするから面倒なんじゃないかと考えて、現状最新の.NET用Windowsデスクトップアプリケーション用フレームワーク「WinUI 3」を試してみました。
WinUI 3 - Windows apps | Microsoft Learn

UWPみたいに新しめなUI使えて、それでいてUWPみたいな制限は少なく、普通のEXEファイルとしてもビルドできます。
任意のプロセスの起動とか、Windows APIも呼び出せます。
もちろん、高DPI対応は、もっとも正確にDPI対応が行われるPerMonitorV2。

試しに画像と文字を置いてみました。


これは等倍。
画像ははっきりくっきり、文字も普通にいい感じですね。


これが200%。
画像は拡大されました。
ぼやけてしまいましたが、元の解像度が低かったし、これが本来の動作なのでとりあえずOKです。
文字はより一層はっきりくっきりして、高DPIに求めているものがしっかり出てくれた感じですね。

複数ウィンドウを扱うのができるかどうかが今ちょっとわからないのですが、一画面で収まるものなら問題なくできそう。

あと、DPI変更に反応して画像を差し替えるみたいなこともできたらいいですね。
このあたりかな。
How to get DPI with WinUI 3? - Microsoft Q&A

アンパンマンDBとdotnet

アンパンマンDB(記事更新)

来週の放送情報。
再放送ですね。

dotnet(Today I Learned)

dotnet build コマンド - .NET CLI | Microsoft Learn

ソリューションでこのコマンドを実行するときに --output オプションを指定すると、出力パスの不明なセマンティクスが原因で、CLI から警告 (7.0.200 のエラー) が出力されます。 このオプションは、ビルドされたすべてのプロジェクトのすべての出力が指定されたディレクトリにコピーされるため、この --output オプションは許可されません。これは、複数のターゲットを持つプロジェクトと、直接および推移的依存関係の異なるバージョンを持つプロジェクトと互換性がありません。 詳しくは、「ソリューション レベルの --output オプションがビルド関連コマンドで無効に」を参照してください。

dotnet buildコマンドを--outputオプションと一緒に使うと、出力先を変えられるわけですが、プロジェクト名を指定しないでこのオプションを使うと、ソリューション内に複数あるプロジェクトが全部同じディレクトリに出力されて、全部交ざっちゃって困るよねって話。
実際には、エラーで止まったりせず、警告を出して指定された出力先に出力されるようです。

.NET MAUI


Build your first .NET MAUI app - .NET MAUI | Microsoft Docs
VS2022がバージョンアップして、.NET MAUIが普通に使えるようになりました。
とりあえず試してみたんですが、UI作るところではグラフィカルなデザイナは表示されないみたいですね。
今のところ、特に作りたいアプリもないので…どうしましょうかね。
自分用だとWPFで結局事足りそう。

WinUI 3とアンパンマンDB

WinUI 3

Windows App SDK を使用して新しいプロジェクトを作成する - Windows apps | Microsoft Docs
いつぞやのProject Reunionの正式版ですね。
ちょっと触った感じでは、UWPと大差ない感じ?
グラフィカルなツールが、エラーで使えませんでした。
やりたいことも別に定まってないし、まだまだ様子見かな。

アンパンマンDB

PHPバージョンアップに伴う微妙なエラー、アンパンマンDBを中心に起こっているので、そちらを重点的に修正中です。

Project Reunionとゼルダの伝説夢をみる島

Project Reunion

Project Reunion 0.5 を使用してデスクトップ Windows アプリをビルドする | Microsoft Docs
昔ながらのWindowsデスクトップアプリとモダンなUWPの統合を目指したプロジェクトですね。
こういうのって、現れては消え、また新しいのができては失敗を続けているけど、今度こそ…どうなのかな。

今のところは、Visual Studio 2019に拡張機能を入れて、新規プロジェクトとして作る形になります。
試しに新規プロジェクトを一個作ってみましたが、UIの設計にグラフィカルなツールが使えないので、まだまだバージョン0.5感が否めませんね…。
メインの開発は別の形で進めつつ、あまり期待しないで様子見ておこうと思います。

ゼルダの伝説夢をみる島


カギの穴ぐらをクリアして、ペガサスの靴であちこち走り回っていました。
オカリナも手に入りそうなところまで来たけど、それは後回しにして、気が済むまで走り回ろうと思います。
アイテムを手に入れるたび、行動範囲がぐんぐん広がっていきますね。

.NET 5

VPSの話の続きなんですが、もはやサーバーとは関係ない内容です。
以前は.NET Core 3.1を使っていたんですが、今回.NET 5に上げたんですね。
サーバープログラムのターゲットフレームワークを5に上げるのは当然なんですが、それを参照しているテストプログラムも5に上げる必要があります。
そこまではやっていたんです。
テスト環境が使うDockerイメージも5に合わせたものに変えなきゃいけないのを忘れてました。
ここらへんに書いてありますな。

TGWSAdmin

.NET5に移行するの諦めました。
文字コードの問題とか、ライブラリの入れ直しとか、いろいろやりましたが、PropertyGridがなぜか実行時におかしくなるのと、ContextMenuStripがデザイン時に編集できないのが致命的でした。
0から作った場合にはPropertyGridは普通に動作してくれたんですが、それとの違いがどうにもつかめず。
ContextMenuStripに関しては、デザイナーの問題だからこっちでは手の出しようがないですね…。
どのみちWeb側に機能を持っていきたいので、先進的なものを挑戦するのは控えようかと思います。

TGWSAdmin

.NET5に移行を試行中。
今のところうまく動いているように見えるけど、本番稼働はトラブルに対応できる土曜日以降にしよう。

.NET 5

アンパンマンDB4の開発に集中していて気付かなかったんですが、.NET 5リリースされてたんですね。
早速Visual Studioアップデートして、.NET 5対応環境に更新しました。
.NETのバージョンを上げると動かなくなるライブラリがあったりするので油断はできないですが、折を見て既にあるソフトとかも.NET 5対応させていきたいですね。
一緒にC# 9も有効になるみたいですが、これも機会があれば試してみたいところです。

.NET Core 3.0

正式版がリリースされたようなのでインストール。
Windows Formsは作れるけどデザイナがないのでまともに開発はできなさそう。

ドラゴンクエスト10とSelenium

ドラゴンクエスト10

とろけるチーズのラクレット
テンの日。
いつものアイテム回収と、とろけるチーズのラクレット…?
私の知っているラクレットと違うような…。

Selenium

ちょっと前からやっていたSeleniumを使ったプロジェクトは、一定の成果を出せそうなところまでできました。
最後に.NET CoreのTLSの扱いというSeleniumと無関係なところで詰まったりしましたが。
.NET Frameworkの小手先の回避手段が使えなかったんですね…。

<前 次>