トップ «前の日記(2016-01-31) 最新 次の日記(2016-02-04)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2016-02-01

_ CIマシンでCOM Interop含んだcsprojのビルド

どこにも正しい情報が見当たらないのでメモ。

やりたいことは、COMのDLLを参照しているC#のビルドをCIマシンで行うこと。

問題はCIマシンは独自に管理されているから、COMのDLLをレジストリへ登録するのが手続き的にばかげてあり得ないことだ。

というわけで、DLLをRegsvr32せずにビルド環境で取り込みたい。

Visual Studioがローカル環境のレジストリを参照して作成した要素はCOMReferenceだ。これを書き直す。

StackOverflowにはRegistering COM referenced DLLs on a build serverがあり、ほとんど正しいのだが決定的に間違っている。もしかするとVS2015で扱いがかわったのかも知れない(2012年の投稿)。

利用するのは、COMFileReference要素だ。

StackOverflowにはHintPathが使えるとコメントされているが、VS2015(V14.0)のMSBuildでは使えない。

COMFileReferenceのInclude属性に相対パスを記述すると正しく処理できる。

<ItemGroup>
   <COMFileReference Include="..\COMDLLs\MyComLibrary.dll">
     <EmbedInteropTypes>True</EmbedInteropTypes>
   </COMFileReference>
</ItemGroup>

Includeで指定するDLLはネイティブCOM DLLであって、TlbImpしたDLLではない。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え