我有一个使用 Smith Html Editor 的 C# 解决方案(我正在使用它的主项目上进行开发,所以我对这个库不太了解),它引用了 MSHTML。这一直工作得很好,直到我升级到 Windows 10 并且它再也找不到 MSHTML 了。我可以直接引用 GAC 文件夹上的 DLL,它会停止抱怨并因此进行构建,但它会出现一些与编辑器未实例化相关的运行时错误。
经过一番研究,结果发现 MSHTML 已从 Windows 10 中逐步淘汰,因为它现在使用 EdgeHTML。有谁知道我该如何解决这个问题?
该解决方案仍然适用于 Windows 7。
我刚刚就这个问题创建了一篇博客文章。问题是在升级过程中,全局程序集缓存中的 Microsoft.mshtml.dll 程序集从 ActiveX 中取消注册。要解决此问题,需要在程序集上运行“regasm”:
regasm Microsoft.mshtml.dll
伟大的解决方案阿伦!
就我而言,是:
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:\windows\system32\mshtml.tlb 有效。请注意,这不是 dll,而是 tlb。非常感谢您提出这个问题,并感谢汉斯的回答:)
我有同样的问题,我认为发生的事情,至少就我而言,是该项目最初是 Windows 7 上的 VS2012 项目,并且安装了一个被引用的主要互操作程序集。当我删除并重新添加对 MSHTML 的引用并对文件进行比较时,唯一的区别是
<WrapperTool>
从 primary
更改为 tlbimp
并且 <EmbedInteropTypes>
从 false 更改为 true。
在某些时候,Visual Studio 添加了将 COM 包装器直接嵌入到程序集中而不是引用 PIA 的功能,因此我猜测 Windows 10 上的新 VS2015 安装不再安装 PIA,因为它们不是必需的。因此,这就是为什么删除并重新添加引用可以解决问题,并且该项目也应该继续在旧操作系统上正常构建。
如果以上所有方法都无法为您工作,这是我的解决方案,它与上面的不同,但它对我有用:
我在全局程序集缓存中注册了 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>
第3步 运行以下命令在全局程序集缓存中注册:
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”中找到它。引用官方常见问题解答:
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 构建的应用程序中的 WebView 控件 8.1 将继续加载 MSHTML 以保持兼容性。
由于某种原因,在我的例子中,
Microsoft.mshtml
文件位于不同的目录中。在 Visual Studio 上,双击程序集引用,您将找到它的路径。现在打开“VS2017的开发者命令提示符”,输入以下内容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”并将其再次添加到项目中。这解决了我的问题。
在 Windows Server 2022 和 Visual Studio Build Tools 2022 上的新构建服务器也遇到同样的问题。该图书馆不在 GAC 中,我无法通过
mshtml.dll
从 C:\Windows\System32
添加 gacutil
。对我有用的答案是here - 安装工作负载“Visual Studio Tools for Office (VSTO) 构建工具”(Microsoft.VisualStudio.Component.TeamOffice.BuildTools
) - 该库以及大量其他内容被添加到 GAC 中,并且构建应该可以正常工作。