もう.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は変えてね