Closed xtuaok closed 9 years ago
ご報告ありがとうございます。
アセンブリの探索規則による問題はIOverlayAddon
を別アセンブリに分離してしまうことにより解決できる見込みです。
ACT の再起動を伴わない OverlayPlugin 再読み込み時に、アドオンが再度読み込まれない問題に関しては、静的コンストラクタは一度しか実行できないことが原因でした。IOverlayAddon
のインスタンスにアドオンの情報を持たせ、それをプラグイン側で保持することにより、こちらの問題も解決できる見込みです。
問題を修正したコミット 7bd87e471538f5eaf0b34cb4158a39c81c5f797c をプッシュしました。
IOverlayAddon の実装方法に大きな変更が入ってしまいましたが、報告していただいた問題は解決していると思われます。
今回のコミットで問題が解消したことを確認しました。 ありがとうございました。
ちなみにですが当方のアドオン(EnmityOverlay)は0.3系がリリースされた後にリリースしようと考えています。
OverlayPlugin (0.3.0.0)を下記の構成でインストールすると、アドオンのロード時に再度OverlayPlugin.dllがロードされて、実行中のIOverlayAddonにアサインできない型になってしまいます。
テストケースの構成
C:/local/ACT/Advanced Combat Tracker.exe
(ACT実行ファイル)C:/local/ACT/OverlayPlugin/
(OverlayPlugin インストールフォルダ)おそらくアセンブリの探索規則によるものと考えられます。 参考: https://msdn.microsoft.com/ja-jp/library/15hyw9x3%28v=vs.110%29.aspx
この探索規則により、ACTのexeがあるフォルダ以下のOverlayPlugin/OverlayPlugin.dll が見つかってしまい、カスタムリゾルバが呼び出される前にロードが解決してしまいます。 その結果
GetExecutingAssembly()
によるアセンブリが使用されません。蛇足ですが ACTからOverlayPluginをロード後、OverlayPluginのEnabledを切り替えるとアドオンが読まれないようですがこれはまた別の問題であり、ACTを再起動すればいいことなのでケアする必要性は薄いかも知れません。