Windows 10 上的 MSHTML DLL

问题描述 投票:0回答:9

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

经过一番研究,结果发现 MSHTML 已从 Windows 10 中逐步淘汰,因为它现在使用 EdgeHTML。有谁知道我该如何解决这个问题?

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

c# wpf windows-10 mshtml microsoft-edge
9个回答
53
投票

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

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

10
投票

伟大的解决方案阿伦!

就我而言,是:

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

(我把这些写在单独的行上,因为自动换行使阅读变得混乱)。


7
投票

我也遇到了完全相同的问题。添加 c:\windows\system32\mshtml.tlb 有效。请注意,这不是 dll,而是 tlb。非常感谢您提出这个问题,并感谢汉斯的回答:)


5
投票

我有同样的问题,我认为发生的事情,至少就我而言,是该项目最初是 Windows 7 上的 VS2012 项目,并且安装了一个被引用的主要互操作程序集。当我删除并重新添加对 MSHTML 的引用并对文件进行比较时,唯一的区别是

<WrapperTool>
primary
更改为
tlbimp
并且
<EmbedInteropTypes>
从 false 更改为 true。

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


4
投票

如果以上所有方法都无法为您工作,这是我的解决方案,它与上面的不同,但它对我有用:

我在全局程序集缓存中注册了 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


3
投票

即使 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 以保持兼容性。


2
投票

由于某种原因,在我的例子中,

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


1
投票

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


0
投票

Windows Server 2022Visual Studio Build Tools 2022 上的新构建服务器也遇到同样的问题。该图书馆不在 GAC 中,我无法通过

mshtml.dll
C:\Windows\System32
添加
gacutil
。对我有用的答案是here - 安装工作负载“Visual Studio Tools for Office (VSTO) 构建工具”(
Microsoft.VisualStudio.Component.TeamOffice.BuildTools
) - 该库以及大量其他内容被添加到 GAC 中,并且构建应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.