.NET5以降でExcelのRTDServer実装方法 C#

もう.NET Frameworkは捨てないといけない


regasmはもう要らない。

.csprojで

<EnableComHosting>true</EnableComHosting>

追加してビルド。

するとhoge.comhost.dllというDLLができるので、これをregsvr32.exeで登録。

大事なのはExcelが32bitなら32bit版のDLLを作って 32bit版のregsvr32.exeで登録すること。
Excelが64bitなら64bit版のDLLを作って 64bit版のregsvr32.exeで登録すること。

ビルド後のイベントでregsvr32登録いれとくと便利(これは32bit環境例)

C:\Windows\SysWOW64\regsvr32.exe /s "$(TargetDir)\hoge.comhost.dll" 

.csprojで以下追加すれば32/64bitビルドを切り替えられる。
ただし構成マネージャーでちゃんとx86/x64をつくっておくこと。AnyCPUのままだとこの分岐が意味なくなる

	<PropertyGroup Condition=" '$(Platform)' == 'x86' ">
		<PlatformTarget>x86</PlatformTarget>
	</PropertyGroup>

	<PropertyGroup Condition=" '$(Platform)' == 'x64' ">
		<PlatformTarget>x64</PlatformTarget>
	</PropertyGroup>

$(Platform)などの値がなにはいってるのか見るなら、.csprojで以下のように追加する

	<Target Name="DisplayPlatformShortName" AfterTargets="Build">
		<Message Text="Platform is: $(Platform)" Importance="high" />
		<Message Text="PlatformShortName is: $(PlatformShortName)" Importance="high" />
		<Message Text="Configuration is: $(Configuration)" Importance="high" />
	</Target>

出力を"詳細"にしないと見えない。
ツール>オプション>プロジェクトおよびソリューション>ビルドして実行>MSBuildプロジェクトビルドの出力の詳細 = 詳細



RTDServer自体のサンプルはここをそのままでOK.
Guidは変えてね

gist.github.com