ChangeToken.OnChangeの罠
CI/CDとかクラウドとかまったく縁遠い中小企業にとっては.NET Framework初期のアプリの様に未だに設定ファイルをはじめ外部ファイルに大量依存、リリースも安心してできない、ブルーグリーンデプロイメントも当然できないといううれしくない状況なわけですが、そんな環境だと例えば外出しのSQLファイルだけ変えて仕様変更に対応するといったことをしたくなります。
で、.NET Coreにはファイルの変更を検知してゴニョニョするためのChangeToken.OnChange
という静的メソッドがあります。
※ASP.NET Coreとあるがコンソールアプリでも問題ないので気にしない
簡単に実装できそうだったが、なぜか検知してくれなかった。
結論としてはIFileProvider
のWatch
メソッドが絶対パスだとダメだったというオチだった。
なので正確にはPhysicalFileProvider.Watch(String) メソッドの仕様といったところなのかもしれない。
Watchメソッドはglobパターンで複数のファイルをWatchできるが、変更されたファイル1つに対してのみ何かアクションを起こしたいとき1は、globパターンで使っていると都合が悪いのでそのような場合はサンプルのようにすればいいかと思います。