4

IE Web ブラウザー コントロールに基づく WinForms ベースの WebBrowser コントロールを含む WPF ベースのアプリケーションを維持しています。展開するときは、Microsoft.mshtml.dllも提供し、ClickOnce 発行プロセスのためにいくつかのカスタム構成を行って、動作させる必要がありました。

C# 4.0の新しいNoPIAType Equivalence機能と動的型機能により、アップグレードすれば、Microsoft.mshtml.dllアセンブリへの依存関係を削除できると期待できますか? もしそうなら、これは展開のサイズをかなり縮小するだけでなく、公開プロセスも簡素化します.

通常は自動的に生成される型を、Visual Studio による MapPoint コントロールなどの COM 型の追加アセンブリに埋め込むことができるようにする必要があることを理解しています。これがMicrosoft.mshtml.dllにも当てはまるかどうか、または最も単純なケースでもどのように行われるかはわかりません。これらの新機能が、COM 相互運用機能、特にMicrosoft.mshtml.dllアセンブリに依存するプロジェクトに実際にどのような影響を与えるかについて誰かが説明できれば、非常に助かります。

4

2 に答える 2

7

まったく、それがすべてです。ソリューションを VS2010 にインポートし、[プロジェクト + プロパティ] の [アプリケーション] タブで、[ターゲット フレームワーク] を .NET 4.0 に変更します。ソリューション エクスプローラー ウィンドウで [参照] ノードを開き、Microsoft.mshtml 参照を選択して、その "Embed Interop Type" プロパティを True に設定します。4.0 を対象とする新しいプロジェクトでは、自動的に有効になります。

これは、[COM] タブで選択したすべての COM タイプ ライブラリと、[.NET] タブで選択したすべての PIA で機能します。タイプ ライブラリはビルド時にのみ必要です。相互運用ライブラリや PIA をデプロイする必要はもうありません。もちろん、実際の COM サーバーはターゲット マシン上にまだ存在している必要があります。

新しい dynamic キーワードとオプションの名前付き引数機能は関係ありません。これらは、スクリプト言語で動作するように設計された COM サーバーで動作するときに、よりクリーンなコードを簡単に記述できるようにするだけです。Mshtml は既にかなりクリーンです。Office の相互運用性はその最良の例です。

また、Windows フォームの HtmlDocument クラスと HtmlElement クラスを利用すると、mshtml への依存を避けるのが簡単になる傾向があることにも注意してください。これは、WebBrowser.Document プロパティを使用して開始されます。ただし、すべての mshtml 機能をラップしているわけではありません。

于 2010-05-05T12:15:17.357 に答える
2

C#4.0をアップグレードすると、Microsoft.mshtml.dllアセンブリへの依存関係を削除できると期待できますか?

アセンブリをビルドするために依存関係は引き続き必要ですが、実行時には必要ありません(VSはそれを出力ディレクトリにコピーしません)

MSHTMLへの参照のプロパティで「EmbedInteropTypes」設定を「True」に設定している場合。

于 2010-05-05T09:27:58.710 に答える