【问题标题】:How do I use MSHTML on a machine that does not have Visual Studio installed?如何在没有安装 Visual Studio 的机器上使用 MSHTML?
【发布时间】:2009-05-20 15:46:16
【问题描述】:

我在我的 ASP.NET-MVC 应用程序中使用 mshtml 来解析 HTML。在我安装了 VS2008 Professional 的开发机器上运行良好。在我安装了 VS Express 2008/WebDev 的登台机器上运行良好。但是当尝试在没有 Visual Studio 版本的生产服务器上加载 COM 对象时,它会抛出 FileNotFoundException。

Exception type: FileNotFoundException 
    Exception message: Could not load file or assembly

'Microsoft.mshtml, 版本=7.0.3300.0, 文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。系统 找不到指定的文件。

我不想在生产机器上安装 Visual Studio。我读过运行 C:\Program files\Common Files\Merge 的suggestion modules\vs_piaredist.exe 解决了这个问题,但这个目录在我的生产机器上不存在。如何在生产机器上使用 mshtml?

【问题讨论】:

  • vs_piaredist.exe 在暂存或开发机器上也不存在,但在开发机器上有一个名为 vs90_piaredist 的文件。

标签: asp.net asp.net-mvc vb.net iis-6 mshtml


【解决方案1】:

在开发机器上使用 vs90_piaredist 似乎是解决方案。互操作程序集称为 Microsoft.mshtml.dll,它位于 C:\Program Files\Microsoft.NET\Primary Interop Assemblies。运行 vs90_piaredist 在生产机器上创建了这个目录,并在其中放置了 5 个互操作 dll,包括 Microsoft.mshtml.dll。

thread 对此问题进行了一些很好的讨论。

【讨论】:

    【解决方案2】:

    mshtml IE 不依赖吗?生产箱装的是什么版本的IE?考虑升级到至少 6

    【讨论】:

    • IE7. mshtml.dll 位于 system32 目录中,但无论出于何种原因,应用程序都看不到它。
    【解决方案3】:

    IE 是非托管代码,因此需要一个互操作层才能从托管变为非托管。 Primary Interop Assembly (PIA) 是通常由供应商提供的一种。这就是建议您运行 piaredist.exe 的原因

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 2011-06-10
      • 2010-11-03
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 2019-07-12
      相关资源
      最近更新 更多