秀丸マクロ用に.NETの.dllを作るには大別して4つの方法がある
.NET4.xのCOM を使う方法
-
秀丸エディタ v8.96以上
-
秀丸マクロの createobject 用の.NET4.x dll作成方法
秀丸マクロ側の記述も C#側の記述もスッキリしており、エレガントな構成にしやすい。
COMサーバーとして配置してある.dllが、呼び出し起点となるため、通常の運用なら.dll のパス問題と無縁でいられる。
シンプルなプラグインのようなものを作るシステムとマッチしている。
jsmode/JScript からなら、JavaScript上の関数をそのまま渡して、C#側からまるでC#の関数のように呼び出せ、非常に強力。
.NET5以降のCOM を使う方法
-
秀丸エディタ v8.97以上
-
秀丸マクロの createobject 用の.NET5 dll作成方法
秀丸マクロ側の記述も C#側の記述もスッキリしており、エレガントな構成にしやすい。
COMサーバーとして配置してある.dllが、呼び出し起点となるため、通常の運用なら.dll のパス問題と無縁でいられる。
シンプルなプラグインのようなものを作るシステムとマッチしている。
ただし、.NET4.xに比べ、各種設定の.jsonなど依存ファイルが多く、x86とx64でファイルを分ける必要も出てくる
jsmode と .NET4.8 の組み合わせで、最大の威力を発揮する。
Native AOTを使う方法
-
秀丸エディタ v8.73以上 (v8.77以上推奨)
-
Native AOT による手法 (Microosoft 公式)
呼び出し口のインターフェイスだけ、ネイティブになり、
他はほとんどのC#ライブラリをそのまま使える。
ただし、C#のリフレクション機能に未対応なライブラリはコンパイルできないため、
JSON系のライブラリなどが利用できない。
(ここは、秀丸のjsmodeと組み合わせる際に、やや足かせとなりやすい)
jsmode / webview2 と .NET9.0 以降の組み合わせで威力を発揮しやすい。
hm.NET を使う方法
-
秀丸エディタ v8.73以上 (v8.77以上推奨)
-
hm.NET (秀丸マクロ用 .NET Framework ライブラリ via C#)
特徴としては、hm.NETが便利な機能を提供してくれるため、高機能な.dllを作りやすい。
常駐して監視するタイプの.dll作成にも向いている。
C#の中から秀丸マクロ実行や秀丸変数への読み書きが出来るのが特徴。
hm.NETが間を取り持っているため、エラーが出た際のエラー理由がわかりやすい。
DllExport.bat を使う方法
(Microsoft のNative AOTが全ての面で優れていますので、こちらは非推奨です
-
秀丸エディタ v8.66以上 (最低環境としてはv7.11程度でも動作)
-
DllExport.bat ~C#のみで 秀丸マクロ用のDllを作成~
「hm.NET.dll」が何らかの理由で使えない(サードのdll回避など)、かつ、「COM を使う方法」も使えない(秀丸エディタのバージョンが8.95以下で不足している場合)、
この手法を採用することを検討する。
様々な意味で、上の3つよりは劣る方法である。