Означают ли новые функции NoPIA и эквивалентности типов в C # /. NET 4.0, что Microsoft.mshtml.dll больше не нужен - PullRequest
4 голосов
/ 05 мая 2010

Я поддерживаю приложение на основе WPF, которое содержит элемент управления WebBrowser на основе WinForms, основанный на элементе управления веб-браузера IE. При развертывании нам также пришлось предоставить Microsoft.mshtml.dll и выполнить некоторые пользовательские настройки для процесса публикации ClickOnce, чтобы все заработало.

Мне любопытно, что с новыми функциями NoPIA и Эквивалентность типов и возможностями динамического типа в C # 4.0 мы можем ожидать, что если мы обновим это, мы можно удалить зависимости в сборке Microsoft.mshtml.dll ? Если это так, то это не только немного уменьшит размер нашего развертывания, но и упростит процесс публикации.

Насколько я понимаю, мы должны иметь возможность встраивать типы, которые обычно генерируются автоматически, в дополнительные сборки для типов COM, таких как элемент управления MapPoint от Visual Studio. Я не знаю, относится ли это также к Microsoft.mshtml.dll или как это делается даже в самых простых случаях. Если бы кто-нибудь мог объяснить, как эти новые функции могут оказать практическое влияние на проект, основанный на COM-взаимодействии, и особенно на сборке Microsoft.mshtml.dll , это очень помогло бы мне.

Ответы [ 2 ]

7 голосов
/ 05 мая 2010

Абсолютно, это то, что это все. Импортируйте свое решение в VS2010, Project + Properties, вкладка Application, измените Target Framework на .NET 4.0. Откройте узел «Ссылки» в окне обозревателя решений, выберите ссылку Microsoft.mshtml и установите для его свойства «Встроить тип взаимодействия» значение True. Он автоматически включается для новых проектов, нацеленных на 4.0

Это работает для любой библиотеки типов COM, выбранной на вкладке COM, а также для любой PIA, выбранной на вкладке .NET. Библиотека типов требуется только во время сборки, вам больше не нужно развертывать библиотеки взаимодействия или PIA. Фактически COM-сервер должен, конечно, все еще присутствовать на целевой машине.

Новое динамическое ключевое слово и дополнительные и именованные функции аргументов не связаны, они просто облегчают написание более чистого кода при работе с COM-серверами, которые были разработаны для работы с языками сценариев. Mshtml уже довольно чистый, взаимодействие с Office - лучший пример.

Также обратите внимание, что легко избежать зависимости от mshtml при использовании классов HtmlDocument и HtmlElement в Windows Forms. Это начинается с использования свойства WebBrowser.Document. Однако они не включают все функции mshtml.

2 голосов
/ 05 мая 2010

C # 4.0 Можем ли мы ожидать, что при обновлении мы сможем удалить зависимости в сборке Microsoft.mshtml.dll?

Вам все еще понадобится зависимость для сборки вашей сборки, но она не нужна во время выполнения (и VS не будет копировать ее в выходной каталог)

При условии, что вы установили параметр «Внедрить типы взаимодействия» в свойствах ссылки на MSHTML, установленной на «Истина».

...