秀丸マクロの createobject 用に .NET Framework 4.x で.dllを作成する方法です。
常駐監視タイプではない、シンプルな .dllの場合、
この createobject 用の.dllを .NET Framework で作成する方法が、おそらくベストチョイスとなります。
dll側の引数の受け取り方、値の返し方の自然さ、秀丸マクロ側の記述の自然さの両者のバランスが一番良い形で取れています。
下記のファイルは、以降の解説記事の内容のソリューションとなります。
NET4COMServer.zip を右クリックでプロパティで、「許可する(もしくはブロック解除する)」を適用してください。
秀丸エディタ ver8.96以上
Visual Studio 2019以降を推奨
VisualStudioにて「新しいプロジェクトの作成...」→「Visual C#」→「クラス ライブラリ (.NET Framework)」を選択し、
NET4COMServer というプロジェクトにしたとしましょう。
「hm.NET」や「DllExport.bat」による手法とは異なり、メソッドにstatic を付けてしまうと秀丸から呼び出せなくなるので注意してください。
(COMはC#のstaticメソッドをサポートしていない)
static なメソッドは秀丸マクロのcreateobject/member経由からは呼び出せなくなるので注意!
Visual Studio のメニューより「ツール」→「Guidの作成」
このように新たなGUIDを作成して、classの1つ上の行へと貼り付けましょう。
秀丸マクロ側から直接名指しで呼び出したいクラス1つに対して1つの新たなGuidが必要です。
別のクラスにすでに割り当てているGuidを流用しないようにしてください。
プロジェクトのプロパティを開き、「アセンブリ情報」内の「アセンブリをCOM参照可能にする」にチェックを入れます。
「AssemblyInfo.cs」のソースが以下のように変化したことを確認しましょう。
別のdllにすでに割り当てているGuidをコピペで流用しないようにしてください。