Windows 10上的MSHTML DLL

我有一个使用Smith Html编辑器的C#解决方案(我正在开发使用它的主项目,所以我对这个库不太了解),它引用了MSHTML。 这工作正常,直到我升级到Windows 10,它再也找不到MSHTML了。 我可以直接引用GAC文件夹上的DLL,它会停止抱怨并因此构建,但它会得到一些与编辑器无关的实例化运行时错误。

经过一番研究后发现MSHTML已逐步退出Windows 10,因为它现在使用的是EdgeHTML。 有谁知道我怎么能绕过这个?

该解决方案仍适用于Windows 7。

我刚刚在这个问题上创建了一篇博文 。 问题是全局程序集缓存中的Microsoft.mshtml.dll程序集在升级过程中从ActiveX中取消注册。 要解决此问题,必须在程序集上运行“regasm”:

  1. 打开“VS2013的开发人员命令提示符”(或者您正在使用的任何Visual Studio版本)的实例。 通过右键单击图标并选择“以管理员身份运行”,以管理员身份运行它。
  2. 导航到“C:\ Windows \ assembly \ GAC \ Microsoft.mshtml \ 7.0.3300.0__b03f5f7f11d50a3a”。 您的路径可能会有所不同。 要进行validation,请转到“C:\ Windows \ assembly \ GAC \ Microsoft.mshtml”并键入“dir”。
  3. 进入正确的路径后,键入regasm Microsoft.mshtml.dll

我有同样的问题。 添加c:\ windows \ system32 \ mshtml.tlb有效。 注意它不是dll,而是tlb。 非常感谢你提出这个问题并感谢Hans,答案:)

我有同样的问题,我认为正在发生的事情,至少在我的情况下,该项目最初是Windows 7上的VS2012项目,并且安装了一个引用的主互操作程序集。 当我删除并重新添加对MSHTML的引用并对文件执行diff时,唯一的区别是已从primary更改为tlbimp并且已从false更改为true。

在某些时候,Visual Studio添加了将COM包装器直接嵌入到程序集中而不是引用PIA的能力,因此我的猜测是Windows 10上的新VS2015安装不再安装PIA,因为它们不是必需的。 这就是为什么删除和重新添加引用可以解决问题,并且项目应该继续在旧操作系统上构建。

即使将Edge作为默认浏览器,MSHTML仍然是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。 目前,EdgeHTML无法通过WebBrowser控件获得。

EdgeHtml

在为Windows 10构建的Universal Windows Apps中,WebView控件使用Microsoft EdgeHTML。 为Windows 8和8.1构建的应用程序中的WebView控件将继续加载MSHTML以保持兼容性。

使用VS 2015我在上次Windows 10更新后遇到了此问题。 我删除了引用“Microsoft HTML Object Library”并将其再次添加到项目中。 这解决了我的问题。

出于某些原因,在我的情况下, Microsoft.mshtml文件位于不同的目录中。 在Visual Studio上,双击程序集引用,您将找到它的路径。 现在打开“VS2017的开发人员命令提示符”,键入以下cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies 。 然后regasm Microsoft.mshtml.dll