it-roy-ru.com

MSHTML DLL в Windows 10

У меня есть решение C #, в котором используется Smith Html Editor (я занимаюсь разработкой основного проекта, который использует его, поэтому я не очень разбираюсь в этой библиотеке), в котором делается ссылка на MSHTML. Это работало нормально до моего обновления до Windows 10 и больше не может найти MSHTML. Я могу напрямую ссылаться на DLL в папке GAC, и он перестает жаловаться и, следовательно, выполняет сборку, но он получает некоторые ошибки времени выполнения, связанные с тем, что редактор не создан.

После небольшого исследования выясняется, что MSHTML выведен из Windows 10, поскольку теперь он использует EdgeHTML. Кто-нибудь знает, как я могу обойти это? 

Решение все еще работает для Windows 7.

22
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
35
user1233749

У меня была точно такая же проблема. Добавление c:\windows\system32\mshtml.tlb сработало. Обратите внимание, что это не DLL, но TLB. Большое спасибо за вопрос и спасибо Ганс, за ответ :)

7
Flemming Bonde Kentved

У меня была та же проблема, и я думаю что происходит, по крайней мере, в моем случае, это то, что проект изначально был проектом VS2012 для Windows 7, и была установлена ​​основная сборка взаимодействия, на которую была ссылка. Когда я удалил и повторно добавил ссылку на MSHTML и выполнил проверку файлов, единственное отличие заключалось в том, что <WrapperTool> был изменен с primary на tlbimp, а <EmbedInteropTypes> был изменен с false на true.

В какой-то момент Visual Studio добавила возможность вставлять обертки COM непосредственно в сборку вместо ссылок на PIA, поэтому я предполагаю, что новая установка VS2015 в Windows 10 больше не устанавливает PIA, поскольку в них нет необходимости. Вот почему удаление и повторное добавление ссылки решает проблему, и проект должен продолжать нормально работать и на старых ОС.

4
Josh

MSHTML по-прежнему является важным компонентом в Windows 10, даже с Edge в качестве браузера по умолчанию. Вы можете найти его в "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. В настоящее время EdgeHTML не является доступны через элемент управления WebBrowser.

EdgeHtml

В универсальных приложениях Windows, созданных для Windows 10, элемент управления WebView использовать Microsoft EdgeHTML. Элементы управления WebView в приложениях, созданных для Windows 8 & 8.1 продолжит загружать MSHTML для сохранения совместимости.

3
Malte Lantin

По некоторым причинам в моем случае файл 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» и снова добавил ее в проект. Это решило проблему в моем случае.

1
Wolf