在本例中使用正确版本的程序集 MSHTML 在我的项目中进行部署

Using the right version of an assembly in this case MSHTML in my project and for deployment

在我安装了 Internet Explorer 10 的 VS2012 项目中,如果我通过转到 COM 引用添加引用并选择 MSHTML,那么它会给我安装在 GAC 中的版本,即旧的 7.0.3300.0。如果我真的查看 system32 或 sysWOW64,那么 .dll tlb 版本是一个更新得多的版本。

我应该如何针对较新的版本进行开发?

如果我理解正确的话,mshtml 是随 Internet Explorer 安装的,所以如果我的部署机器有 IE10,那么我应该没有问题吧?

谁能猜出为什么 GAC 中有旧版本?我刚刚检查了另外 2 个 Win 7 安装,结果是一样的。 GAC 是 7.0.3300.0 但其他地方它匹配 IE 版本。

编辑: 其他 Win 7 机器都安装了 VS。我刚看了另一个Win 7,GAC里面什么都没有。 VS2012 是在 GAC 中安装这个吗?

评论后更新 看来对此有几个问题。 this reference from the comment also this question which Hans was also involved in. I also found this forum thread as well on the topic.

我仍然不知道我应该做什么,但我当然可以像绵羊一样简单地按照指示去做。我想我需要创建一个 PIA 来允许我调用更新的方法(这修复了 VS),但请理解,如果在没有兼容 MSHTML / IE 版本的 PC 上使用此代码,它将崩溃。 (与 Office PIA 相同,如果您调用 Office 2010 安装中不存在的 office 2013 方法。)

在我的问题中,我已经链接到可能被视为对该问题更正确的答案。

如果有人正在寻找一种快速而肮脏的解决方案,那么请使用后期绑定。我会在我的案例中具体解释这是什么意思。

Dim div as HTMLDivElement
'make div something
 div.getElementsByClassName  'this was not working!!!

这不会编译,因为 Visual Studio 使用的参考是旧版本。

所以我没有按照上面的操作,因为我只需要几次,所以我将代码更改为这个。

Dim div as Object
'make div something
 div.getElementsByClassName 

现在Visual Studio不会有问题了。您确实面临的问题是,最终最终用户必须至少拥有一个具有此方法或更高版本的 MSHTML(随 Internet Explorer 安装)。

我希望这能帮助那些仍在努力弄清楚什么是 PIA 以及它们在 Visual Studio 和 MS 环境中工作的人。