我有一个使用Smith Html Editor的C#解决方案(我正在开发使用它的主项目,所以我对这个库不太了解),它引用了MSHTML。这工作正常,直到我升级到Windows 10,它再也找不到MSHTML了。我可以直接在GAC文件夹中引用DLL,它会停止抱怨并因此构建,但它会得到一些与编辑器无关的运行时错误实例化。
经过一番研究后发现MSHTML已逐步退出Windows 10,因为它现在使用的是EdgeHTML。有谁知道我怎么能绕过这个?
该解决方案仍适用于Windows 7。
答案 0 :(得分:36)
我刚刚在这个问题上创建了一个blog post。问题是全局程序集缓存中的Microsoft.mshtml.dll程序集在升级过程中从ActiveX中取消注册。要解决这个问题,有必要运行" regasm"在集会上:
//Data to match
$dbverified = //Get the database verified column value
$urlstatus = //url value you sent with email same as database data you update.
//Email to match
$urlemail = //decode url email
$dbemail = //Get user email from db
if($$dbverified == $urlstatus && $urlemail == $dbemail){
echo 'E-mail verified';
}else{
echo 'E-mail cannot be verified';
}
答案 1 :(得分:7)
我遇到了完全相同的问题。添加c:\ windows \ system32 \ mshtml.tlb工作。请注意,它不是dll,而是tlb。非常感谢你提出这个问题并感谢Hans,答案是:)
答案 2 :(得分:4)
我有同样的问题而我认为正在发生什么,至少在我的情况下,该项目最初是Windows 7上的VS2012项目,并且安装了一个主要的互操作程序集引用。当我删除并重新添加对MSHTML的引用并对文件执行差异时,唯一的区别是<WrapperTool>
已从primary
更改为tlbimp
和<EmbedInteropTypes>
从虚假变为真。
在某些时候,Visual Studio添加了将COM包装器直接嵌入到程序集中而不是引用PIA的能力,因此我的猜测是Windows 10上的新VS2015安装不再安装PIA,因为它们不是必需的。这就是为什么删除和重新添加引用可以解决问题,并且项目也应该继续在旧操作系统上构建。
答案 3 :(得分: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和Windows的应用程序中的WebView控件 8.1将继续加载MSHTML以保持兼容性。
答案 4 :(得分:1)
使用VS 2015我在上次Windows 10更新后出现此问题。我删除了引用“Microsoft HTML Object Library”并将其再次添加到项目中。这解决了我的问题。
答案 5 :(得分:1)
由于某些原因,Microsoft.mshtml
文件位于其他目录中。在Visual Studio上,双击程序集引用,您将找到它的路径。现在打开“ VS2017开发人员命令提示符”,键入以下cd C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies
。然后regasm Microsoft.mshtml.dll
。
答案 6 :(得分:1)
如果上述所有方法都无法满足您的需要,这是我的解决方案,与上面的方法有所不同,并且对我有用:
我在全局程序集缓存中注册了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
有关更多信息,请访问以下Web文章: https://docs.microsoft.com/en-us/dotnet/framework/app-domains/how-to-install-an-assembly-into-the-gac
答案 7 :(得分:0)
伟大的解决方案,阿隆!
在我的情况下是:
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
(由于自动换行使阅读变得混乱,因此我在单独的行上写下了这些内容。)