Microsoft.mshtml.dllを抜けるかどうか

いくつか選択肢がある。ブラウザだけあって、mshtmlはちょっと触ってるというレベルではないので、あまり楽な方法は無いけど。

遅延バインディング
インタフェースが全く見えなくなるので、開発効率が相当悪くなる。逐一オブジェクトブラウザなんか見ながらコーディングはつらい。インテリセンスはとても良いものだ。
IDLを見ながらinterfaceをひたすら移植
mshtml.idlは驚愕の32,785行。化け物すぎる。必要なものだけでも相当骨が折れると思う。
IDLを適当にコメントアウトしてDLL化
まあこれが一番楽なんだろうけど、それでも結構な手間。もう少し細かくファイル分割しといてくれたら良かったと思う。

理想は2番目なのだが、根性が無いので3番目をちょっとやっている。それでも結構時間使って、7.6MBのDLLを3.2MBまで削った。とりあえず今自分で使ってるけど、別に問題ないように感じる。軽くなった気も別にしないんだけど。
開発効率については、参照設定にはmshtmlを入れたまま、usingを以下のようにしてみた。Debugソリューションで開発してればmshtmlのほうを参照するので苦は無い。Releaseビルドで参照設定してても使われなければエラーにならないので、問題無いようだ。

#if DEBUG
using mshtml;
#else
using fubhtml;
#endif

あとはどこまで削れるか。直接触っているのはそれほどたくさんのインタフェースではないのだが、インタフェースの定義の中にまた細かいインタフェースがあるので、意外と削れなかった。実際にコード上で使われてないインタフェースのは型無しにしてしまえば削れるとは思うが、コメントアウトと違って書き換えなので、ミスると落ちるだろうな。