|
分類:[.NET 全般]
VisualStudil2005の「VB.Net」での「Microsoft.mshtml.dll」の 使用方法について質問があります。
「.NetFrameWork2.0」には「Microsoft.mshtml.dll」が含まれていないため、 アプリケーションから「Microsoft.mshtml.dll」を使用する場合は アプリケーションと一緒に配布するか、または「Microsoft.mshtml.dll」の使用をやめて 直接COMを参照する対処があるということは、インターネットで調べました。 (「参照の追加」では「.Net」に分類されている為、アプリケーションに同封せず、 「.NetFrameWork2.0」をインストールしただけの試験環境で動作させたら 「Microsoft.mshtml.dll」を参照することができず、 エラーが発生したので、はいっていないことにはじめて気づきました。 「.Net」に分類されているdllで.「NetFrameWork2.0」に入っていないものは 他にあるんですか??余談で申し訳ないですが、はいっているdllととはいっていないdllの 識別方法等ご存知あればこちらも教えてください。)
悩んだ結果、コーディングの難易度が高そうであるのと、 プログラムの可読性を考慮して、dllを同封することにしました。 (圧縮したら1.2M程度になりました。)
そこで、質問はdllのインストール先についてとなります。 開発したアプリケーションと同じフォルダに配置すべきか、 「C:\Program Files\Microsoft.NET\Primary Interop Assemblies」 に配置すべきかわかりません。
「参照設定」の「パス」プロパティで「C:\Program Files\Microsoft.NET\Primary Interop Assemblies」 が指定されていたので、試験環境でも上記フォルダに格納したのですが、 うまく参照できないようです。(試験環境も「RegAsm」によるレジストリ登録はおこなっています。) アプリケーションと同じフォルダに配置した場合は、正常に動作しました。
上記の結果をみる限り、アプリケーションと同じフォルダに配置すれば何も問題がないですが、 いくつか懸念事項があります。
もう一つ別に「Microsoft.mshtml.dll」を参照するアプリケーションを作成し、 「Microsoft.mshtml.dll」をアプリケーションと同じフォルダに配置します。
そして両方の「Microsoft.mshtml.dll」についてレジストリ登録をおこなうと、 両方のアプリケーションが動作可能です。
ただし、片方の「Microsoft.mshtml.dll」についてレジストリ解除をおこなうと、 両方のアプリケーションが動作しなくなります。
せっかくアプリケーションと同じフォルダに配置をしても 他のアプリケーションの影響を受けるのであれば、要領の関係からしても 「C:\Program Files\Microsoft.NET\Primary Interop Assemblies」 に配置したほうが良いのではないかと思いました。
他のアプリケーションのレジストリ解除の影響を受けないようにすることは可能なのでしょうか。
どのようなdll配置,レジストリ登録をおこなうのが「.Net」として良いのか 教えていただきたいです。 「.Net」の基礎についての質問かもしれませんが、よろしくお願いします。
*レジストリ登録には「RegAsm」を使用しています。 *「Microsoft.mshtml.dll」のバージョンは両方とも「7.0.3300.0」です。
|