C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 「Microsoft.mshtml.dll」について


(過去ログ 61 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■34966 / inTopicNo.1)  「Microsoft.mshtml.dll」について
  
□投稿者/ らんぺるーる (70回)-(2009/04/15(Wed) 17:27:36)

分類:[VB.NET/VB2005 以降] 

「Microsoft.mshtml.dll」については、以前も質問をさせていただきました。
今回、IEのバージョンが8にアップすることにより新たな問題に直面したので、
質問させていただきます。お手数をお掛けしますが宜しくお願いいたします。

「Microsoft.mshtml.dll」を参照追加してHTMLの操作をおこなっている
アプリケーションについて、
IE7までは、正常に動作をしていたのですが、IE8にバージョンアップすると
HRESULTエラーが発生するようになってしまいました。
なお「Microsoft.mshtml.dll」はプライベート配置にしております。

プライベートDLLにより読み込みDLLのバージョンが異なることによる問題については
.NETアプリケーションでは発生しなくなりますが、アプリケーションのバージョンがアップした場合に
DLLが古いバージョンを参照しつづけると
今回のように参照するDLLと、実際に動作するアプリケーションのバージョン互換性が失われるという
欠点があるのではないかと感じました。

そんなことはないでしょうか…。考え方がそもそも間違っていたりするでしょうか?

また、COMコンポーネントについて、「Interop」DLLが作成されるケースと
「mshtml.dll」のように「Interop」DLLが作成されないケースがあるようですが、
どのような場合に「Interop」DLLが作成され、どのような場合に作成されないのでしょうか。


引用返信 編集キー/
■34968 / inTopicNo.2)  Re[1]: 「Microsoft.mshtml.dll」について
□投稿者/ やじゅ (975回)-(2009/04/15(Wed) 17:42:34)
やじゅ さんの Web サイト
No34966 (らんぺるーる さん) に返信
> また、COMコンポーネントについて、「Interop」DLLが作成されるケースと
> 「mshtml.dll」のように「Interop」DLLが作成されないケースがあるようですが、
> どのような場合に「Interop」DLLが作成され、どのような場合に作成されないのでしょうか。
>

Interop.xxx.dll を配布したくない
http://www.yamamoworks.net/cs/blog/interop.xxx.dll.html
引用返信 編集キー/
■34969 / inTopicNo.3)  Re[2]: 「Microsoft.mshtml.dll」について
□投稿者/ らんぺるーる (72回)-(2009/04/15(Wed) 18:07:42)
No34968 (やじゅ さん) に返信
> ■No34966 (らんぺるーる さん) に返信
>>また、COMコンポーネントについて、「Interop」DLLが作成されるケースと
>>「mshtml.dll」のように「Interop」DLLが作成されないケースがあるようですが、
>>どのような場合に「Interop」DLLが作成され、どのような場合に作成されないのでしょうか。
>>
>
> Interop.xxx.dll を配布したくない
> http://www.yamamoworks.net/cs/blog/interop.xxx.dll.html

上記の記事を読みました。
「Microsoft.mshtml.dll」はInteropの名前がつきませんが、
InteropのDLLなのでしょうか?

*「Interop.xxx.dll」 を配布するのは特に嫌ではありません。

system32に格納されている「MSHTML.DLL」と「Microsoft.mshtml.dll」
の関係についても分からないで状態なのですが、「Microsoft.mshtml.dll」は
system32に格納されている「MSHTML.DLL」のInteropのDLLではないですよね?





引用返信 編集キー/
■34970 / inTopicNo.4)  Re[1]: 「Microsoft.mshtml.dll」について
□投稿者/ 渋木宏明(ひどり) (1114回)-(2009/04/15(Wed) 18:12:25)
渋木宏明(ひどり) さんの Web サイト
2009/04/15(Wed) 18:44:45 編集(投稿者)

> 今回のように参照するDLLと、実際に動作するアプリケーションのバージョン互換性が失われるという
> 欠点があるのではないかと感じました。
>
> そんなことはないでしょうか…。

あり得ます。

ですが、それが

>「Microsoft.mshtml.dll」を参照追加してHTMLの操作をおこなっている
>アプリケーションについて、
>IE7までは、正常に動作をしていたのですが、IE8にバージョンアップすると
>HRESULTエラーが発生するようになってしまいました。

の原因であるとは、すぐに言い切れるものではありません。(そうである可能性も無論否定はできませんが)

IE8 では IE7 よりセキュリティ他様々な変更が行われているので、相互運用アセンブリ以外の部分で不都合が発生している可能性も十分にあります。

> また、COMコンポーネントについて、「Interop」DLLが作成されるケースと
> 「mshtml.dll」のように「Interop」DLLが作成されないケースがあるようですが、

そんなケースがあるんですか?
Visual Studio で「参照設定」をしたら、その時点で必ず作成されると思うんですが。

もっとも、「参照設定」なしに遅延バインドで COM コンポーネントを扱うなら、相互運用アセンブリは生成されませんけど。

引用返信 編集キー/
■34988 / inTopicNo.5)  Re[3]: 「Microsoft.mshtml.dll」について
□投稿者/ らんぺるーる (73回)-(2009/04/16(Thu) 10:10:35)
>IE8 では IE7 よりセキュリティ他様々な変更が行われているので、相互運用アセンブリ以外の部分で不都合が発生している可能性も十分にあります。
調査を進めた結果、WindowsVistaのユーザーアカウント制御 (UAC; User Account Control)を有効にした場合について、エラーが発生することが
分かりました。
なお、IE7においては、ユーザーアカウント制御 (UAC; User Account Control)を有効にしても、エラーは発生しません。
IE8において、ユーザーアカウント制御で制限される機能が強化されたのかもしれません…。


「Interop」DLLが作成されないケースは「Microsoft.mshtml」の参照を追加した場合です。
7Mバイト以上の容量の「Microsoft.mshtml.dll」がローカルコピーされます。
これはInteropのDLLではないと思うのですが。
(他の参照追加した場合は、InteropのDLLが作成されます。)


引用返信 編集キー/
■34990 / inTopicNo.6)  Re[4]: 「Microsoft.mshtml.dll」について
□投稿者/ 渋木宏明(ひどり) (1115回)-(2009/04/16(Thu) 11:04:56)
渋木宏明(ひどり) さんの Web サイト
> 「Interop」DLLが作成されないケースは「Microsoft.mshtml」の参照を追加した場合です。
> 7Mバイト以上の容量の「Microsoft.mshtml.dll」がローカルコピーされます。
> これはInteropのDLLではないと思うのですが。
> (他の参照追加した場合は、InteropのDLLが作成されます。)

Microsoft.mshtml.dll は、IE のコアコンポーネントである mshtml に対する相互運用アセンブリだったはずです。

「COM コンポーネントだ」と思って参照設定しているブツが、実はあらかじめ用意されている相互運用アセンブリだっただけなんじゃないのかな?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -