web-dev-qa-db-ja.com

MSHTML DLL Windows 10の場合

Smith Html Editor (これを使用するメインプロジェクトで開発しているため、このライブラリについてあまり知りません)を使用するC#ソリューションがあり、MSHTMLへの参照を作成します。 。これは、Windows 10にアップグレードするまで正常に機能し、MSHTMLを見つけることができなくなりました。 GACフォルダーでDLLを直接参照できます。不平を言って停止し、ビルドしますが、インスタンス化されていないエディターに関連するランタイムエラーが発生します。

少し調べてみると、MSHTMLは現在EdgeHTMLを使用しているため、Windows 10から段階的に廃止されています。誰も私がこれを回避する方法を知っていますか?

このソリューションはWindows 7でも機能します。

24
Tyress

この問題について ブログ投稿 を作成しました。問題は、アップグレードプロセス中にグローバルアセンブリキャッシュのMicrosoft.mshtml.dllアセンブリがActiveXから登録解除されることです。この問題を修正するには、アセンブリで「regasm」を実行する必要があります。

  1. 「VS2013の開発者コマンドプロンプト」(または使用しているVisual Studioのバージョン)のインスタンスを開きます。アイコンを右クリックし、「管理者として実行」を選択して、管理者として実行します。
  2. 「C:\ Windows\Assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a」に移動します。パスが異なる可能性があります。確認するには、「C:\ Windows\Assembly\GAC\Microsoft.mshtml」に移動して「dir」と入力します。
  3. 正しいパスに移動したら、regasm Microsoft.mshtml.dll
38
user1233749

私はまったく同じ問題を抱えていました。 c:\ windows\system32\mshtml.tlbの追加は機能しました。 dllではなく、tlbであることに注意してください。この質問をしてくれてありがとう、そして答えてくれたハンス、ありがとう。

私は同じ問題を抱えており、私は思考少なくとも私の場合、プロジェクトは元々Windows 7上のVS2012プロジェクトであり、参照されるプライマリ相互運用機能アセンブリがインストールされていたということです。 MSHTMLへの参照を削除して再度追加し、ファイルの差分を作成したときの唯一の違いは、<WrapperTool>primaryからtlbimpに変更され、<EmbedInteropTypes>がfalseからtrueに変更されたことです。 。

ある時点で、Visual Studioは、PIAを参照する代わりにCOMラッパーをアセンブリに直接埋め込む機能を追加しました。そのため、Windows 10に新しいVS2015をインストールしても、PIAは必要ないためインストールされなくなります。そのため、参照を削除して再度追加すると問題が修正され、プロジェクトは引き続き古いOSでも正常にビルドされるはずです。

4
Josh

MSHTMLは、デフォルトのブラウザとしてEdgeを使用している場合でも、Windows 10の重要なコンポーネントです。 「C:\ Windows\System32」にあります。公式FAQから引用するには:

http://dev.modern.ie/platform/faq/will-the-webbrowser-control-work-with-mi

MSHTML:

Windows 10では、WebBrowserコントロールはInternet Explorerの従来のレンダリングエンジンであるmshtml.dllを使用します。現時点では、WebBrowserコントロールを介してEdgeHTMLは使用できません。

EdgeHtml

Windows 10用に構築されたユニバーサルWindowsアプリでは、WebViewコントロールはMicrosoft EdgeHTMLを使用します。 Windows 8および8.1用に構築されたアプリのWebViewコントロールは、互換性を維持するためにMSHTMLをロードし続けます。

3
Malte Lantin

上記のすべてがうまく機能しない場合は、上記とは異なる解決策がありますが、私にとってはうまくいきました:

Microsoft.mshtml.dllをグローバルアセンブリキャッシュに登録しました。

解決策は次のとおりです。

ステップ1:Windows 10の検索ボックスにdevと入力して開発者コマンドプロンプトを開き、VSxxxxの開発者コマンドプロンプトを右クリックして管理者として実行します

ステップ2:Microsoft.mshtml.dllライブラリに移動します。私の場合:

CD C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies>

ステップ3次のコマンドを実行して、グローバルアセンブリキャッシュに登録します。

gacutil -i Microsoft.mshtml.dll

詳細については、次のWeb記事を参照してください。 https://docs.Microsoft.com/en-us/dotnet/framework/app-domains/how-to-install-an-Assembly-into-the-gac

2

アロンの素晴らしい解決策!

私の場合、それは:

CD C:\Program Files (x86) [Enter]
CD Microsoft Visual Studio\2019 [Enter]
CD Community\Common7\IDE\PublicAssemblies [Enter]
gacutil -i Microsoft.mshtml.dll [Enter]
exit

(ワードラップで読みにくいので、これらを別々の行に書きました)。

2
craisin

私の場合、何らかの理由で_Microsoft.mshtml_ファイルが別のディレクトリにありました。 Visual Studioで、アセンブリ参照をダブルクリックすると、そのパスが見つかります。 「VS2017の開発者コマンドプロンプト」を開き、次のcd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssembliesを入力します。それから_regasm Microsoft.mshtml.dll_。

1
Helder Pinto

VS 2015を使用すると、最後のWindows 10更新後にこの問題が発生しました。 「Microsoft HTML Object Library」という参照を削除し、プロジェクトに再度追加しました。これで私の問題は解決しました。

1
Wolf