经过一番调查,发现Windows 10已经淘汰了MSHTML,现在使用EdgeHTML。请问有人知道我如何绕过这个问题吗?
此解决方案仍适用于Windows 7。
我刚刚在博客上发布了关于这个问题的文章。问题是,全局程序集缓存中的Microsoft.mshtml.dll程序集在升级过程中从ActiveX中注销。为了解决此问题,需要对程序集运行"regasm"命令:
regasm Microsoft.mshtml.dll
太好了,Aron的解决方案非常棒!
在我的情况下,它是这样的:
CD C:\Program Files (x86) [Enter]
CD Microsoft Visual Studio\2019 [Enter]
CD Community\Common7\IDE\PublicAssemblies [Enter]
gacutil -i Microsoft.mshtml.dll [Enter]
exit
(我将它们分开写在不同的行中,因为自动换行使得阅读变得混乱)。
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\ide\PublicAssemblies
路径下找到了这个。 - Simon_Weaver我曾经有同样的问题。添加 c:\windows\system32\mshtml.tlb 就可以解决了。注意,需要添加的不是dll文件,而是tlb文件。感谢你提出了这个问题,也非常感谢Hans提供的答案 :)
<WrapperTool>
从primary
更改为tlbimp
,<EmbedInteropTypes>
从false更改为true。如果以上方法都不能解决您的问题,这里提供一种我自己使用并与上述不同的解决方案:
我将microsoft.mshtml.dll文件注册到全局程序集缓存中。
以下是解决方案:
步骤1: 在Windows 10搜索框中键入dev,右键单击VSxxxx的开发人员命令提示符并以管理员身份运行。
步骤2: 转到您的microsoft.mshtml.dll库。 在我的情况下:
CD C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies>
步骤三 运行以下命令以在全局程序集缓存中注册:
gacutil -i Microsoft.mshtml.dll
如需更多信息,请访问以下网络文章:https://learn.microsoft.com/en-us/dotnet/framework/app-domains/how-to-install-an-assembly-into-the-gac
即使 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 构建的通用 Windows 应用程序中,WebView 控件使用 Microsoft EdgeHTML。针对 Windows 8 和 8.1 构建的应用程序中的 WebView 控件将继续加载 MSHTML 以保持兼容性。
在我的情况下,Microsoft.mshtml
文件位于不同的目录中。在Visual Studio中,双击程序集引用,您会找到它的路径。现在打开 "VS2017 的 Developer Command Prompt",键入以下命令 cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies
,然后运行 regasm Microsoft.mshtml.dll
。
在使用VS 2015时,我在最近的Windows 10更新后遇到了这个问题。我移除了“Microsoft HTML Object Library”的引用,并将其重新添加到项目中。在我的情况下,这解决了问题。