生きてる。
なんかあったかというとさすがに日常レベルでいろいろありはしたんだけど、大きくは何もない。
最近仕事が忙しいので平日作業ができないなあ。 まあ昨年までのやる気無い仕事しかないのよりプログラムひたすら書いてる仕事なので大変ではあるが楽しい。
銀行のキャッシュカードのIC部分が壊れかけなのかATMでたまにしか読み取ってくれなくなって困る。 通勤経路上に銀行はあるんだが、もうずっと通勤していないので平日昼間に行くのは難しくなってしまった。 銀行行くために無駄に出勤するという手はなくもないが。
.NET Coreへ移行作業をちんたら進めている。え、もう.NET 5だって?まあまだLTSじゃないですし焦らんでも……。
基本的に移行はまあまあすんなりできた。
ブラウザでURLを開くのに Process.Start()
にURLを渡してたんだがそれがエラーになるのに困った。しかし単にシェル経由で実行するオプションを明示的にONにするだけで動いてくれた。.NET Frameworkだとなんか適当にやっててくれたんか。
Windowsサービス版はServiceBase
だかなんだかのクラスはあるので実装はできるんだが、サービスインストーラのクラスがなくなっててビルドできない。どうすればいいのかと散々調べた感じ、外部のインストーラを使って登録するようにしろやということらしい。え、元からそうしてたんだけどもしかして単体でなんかインストールする方法があったの?いや確かになんか変だなとは思ってたけど使い方わかってなかったわ。
なんにせよインストーラクラスは不要だということがわかったので削除して上手く動いた。
.NET Coreへの移行自体で困ったのはそれくらいか。しかし配布あたりでいろいろ困る。
今までは.NET FrameworkおよびMonoで動作だったのでランタイムは勝手に入れろってことで実行ファイルはプラットフォーム非依存だったんだが、.NET Coreからはランタイム同梱での配布が基本ぽいのでプラットフォーム毎に配布パッケージも作らないといけない。めんどい。
プラットフォーム毎にパッケージ作るのはまあまだいいんだけど、macOSはさらに公証もしないといけないのでめんどくせえ。やりたくない。 今まではmono依存だったのでmonoが公証されてれば特に問題なかったんだが、.NET Coreで全部入りバイナリを作ると作ったバイナリは公証しないといけないらしい。 めんどくさいのでmacOSは自分で.NET Coreランタイム入れて使ってくれでよくない?monoだってそうだったしいいよね。
他に自動アップデート方法も変えないといけない。インストーラ版はインストーラ起動するだけなんでいいんだけど、ZIP版は自分自信を置き換える自動アップデートをしている。今までは同一プロセス上でDLLだけ置き換えて再起動という変なことをやっていたんだが、さすがにランタイム同梱になるとそういうわけにもいかないのでもっとシンプルな方法にすることにした。 単に一時ディレクトリに展開したのを起動して元の場所にコピって起動しなおすってだけ。 めんどいけど難しいことは全くしてないのですんなり動いたようだ。Windowsでは。他はまた確認する必要がありそうだが。
プラットフォーム毎のパッケージを作ることもあって、まだいろいろと手間がかかりそうだなあ。