秀丸マクロの createobject 用に .NET 5.x で.dllを作成する方法です。
(NET Core 3.1や.NET 6以降も同様)
常駐監視タイプではない、シンプルな .dllの場合、
この createobject 用の.dllを .NET 5で作成する方法も、かなり良い選択となります。
ただし、.NET Framework 4.xでの制作に比べると、.NET 5の手法は少し周辺の「.json」などの設定ファイルが多く必要となりますので、
.NET 5の必要性が全くなく、.NET Framework 4.xで良いのであれば、.NET
4.xでの作成をおすすめします。
下記のファイルは、以降の解説記事の内容のソリューションとなります。
NET5COMServer.zip を右クリックでプロパティで、「許可する(もしくはブロック解除する)」を適用してください。
秀丸エディタ ver8.97以上
.NET 5以降を扱う場合、Visual Studio 2019 v16.8以降が必要です。
VisualStudioにて「新しいプロジェクトの作成...」→「Visual C#」→「クラス ライブラリ (.NET Core)」を選択し、
NET5COMServer というプロジェクトにしたとしましょう。
「hm.NET」や「DllExport.bat」による手法とは異なり、メソッドにstatic を付けてしまうと秀丸から呼び出せなくなるので注意してください。
(COMはC#のstaticメソッドをサポートしていない)
static なメソッドは秀丸マクロのcreateobject/member経由からは呼び出せなくなるので注意!
Visual Studio のメニューより「ツール」→「Guidの作成」
このように新たなGUIDを作成して、classの1つ上の行へと貼り付けましょう。
秀丸マクロ側から直接名指しで呼び出したいクラス1つに対して1つの新たなGuidが必要です。
別のクラスにすでに割り当てているGuidを流用しないようにしてください。
プロジェクトファイルの「****.csproj」ファイルを開き、以下のように設定しましょう。
「EnableComHosting」 をtrueに、
「PlatformTarget」を「x86」にする必要があります。
もしもあなたが「秀丸エディタ 64bit edition」を使っているならば、「PlatformTarget」は「x64」を選択してくださいです。
GUI上で確認した場合には、以下のようになっていればOKです。
「EnableComHosting」については、GUI上で設定を編集や確認はできないので注意してください。
C#の「クラスに割当てたGUID」を以下のようにClsIDとして使って呼び出すこととなります。
C#のdllをコンパイルした際に、「comhost」と付いた.dllが作成されますので、そちらを呼ぶことになります。