概要
秀丸用の自作.dllを作成した場合、通常は「秀丸本体のhidemaru.exe」と「自分で作成した.dll」とは、
「異なるディレクトリ」へと配置するのが普通です。
通常はおそらく、「起動のきっかけとなるマクロファイル(.mac)」と同じフォルダに自作のdllを配置したいと思うことでしょう。
たとえば、次のような感じです。
ためしに以下のようなプログラムが実行可能かどうかみてみましょう。
別のdllの参照
ここではちょうど良いありがちな実験として、「nuget」のdllを利用することを想定したミニマムな実験をしてみしょう。
nuget 経由で、HtmlAgilityPack(=Htmlをパースするライブラリ)を入れてみて、自作のdllで利用してみます。
実行できずエラーとなる
適当なディレクトリ(秀丸本体があるディレクトリ以外のディレクトリ)でマクロから呼び出して実行してみましょう。
エラーとなり実行できません。
なぜなら、中間アセンブリは、デフォルトの状態では呼び出し元(Hidemaru.exe)と同じディレクトリに配置する必要があるからです。
しかし、Hidemaru.exeと同じディレクトリにどんどん配置していってはファイル群の役割の区別がつかなくなってゆき、
メンテナンスできなくなります。
そこで、以下のようにプログラムを追加することで、このような配置でも実行できるようにすることができます。
(hm.NET は、これと類似のことを事前にやっています)
アセンブリの解決
自作のdllに、以下のような「AssemblyResolve」とも呼べるプログラムを、追加することで、「アセンブリが読み込めなかったら、ここにあるこのdllで代用してください」と
パスを指定してアセンブリを読み込ませることができます。
秀丸マクロから最初に呼ぶ予定の「メソッドを含むクラス」の「静的コンストラクタ」に以下のようなものを記述することです。
ポイントは秀丸マクロから最初に呼ぶ予定の「メソッドを含むクラス」の「静的コンストラクタ」に書くことです。