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

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

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

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

2 ответа

Абсолютно, это то, что это все. Импортируйте свое решение в 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.

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

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

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

Другие вопросы по тегам