質問: `mshtml`を使用するためにソリューションエクスプローラーから`Add References`で`Microsoft.mshtml`へのリファレンスを追加しました。 このリファレンスを追加した時にどのファイルが変更されているか気になってプロジェクト内のファイルを`ack mshtml`で検索してみたのですが該当のテキストが見つかりませんでした。 追加されたリファレンス情報はどのファイルにどのように保存されているのでしょうか?
回答: 正しい操作ではありません。COM - Type Librariesの一覧から`Microsoft HTML Object Library`を選択するべきです。 .NETではタイプライブラリを直接扱うことはできません。そのため、Visual Studioは内部でTlbimp.exe (タイプ ライブラリ インポーター)を実行し、タイプライブラリと同等なアセンブリを生成した後に、生成されたアセンブリをプロジェクトに追加します。 しかし、このような操作でアセンブリが乱立するのは危険です。そこで.NETではプライマリ相互運用機能アセンブリ)という機能を提供しています。その上で`Microsoft HTML Object Library`には`Microsoft.mshtml`という名前でプライマリ相互運用機能アセンブリが登録されています。 最終的に`Microsoft HTML Object Library`を選択するとプロジェクトファイル(.csproj)には ``` {3050F1C5-98B5-11CF-BB82-00AA00BDCE0B} 4 0 0 primary False True ``` という設定が追加されます。`{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}`とは`Microsoft HTML Object Library`のタイプライブラリのID(LIBID)です。 レジストリエディタで`HKEY_CLASSES_ROOT\TypeLib\{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}\4.0`を参照すると * Microsoft HTML Object Library * Microsoft.mshtml, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a が登録されていることが確認できます。