如何在未安装 Visual Studio 的计算机上使用 MSHTML?
我正在使用 mshtml 解析 ASP.NET-MVC 应用程序中的 HTML。 在我安装了 VS2008 Professional 的开发机器上运行得很好。 在我安装了 VS Express 2008/WebDev 的临时计算机上运行良好。 但是,当尝试在没有 Visual Studio 版本的生产服务器上加载 COM 对象时,它会引发 FileNotFoundException。
异常类型:FileNotFoundException 异常消息:无法加载文件或程序集
'Microsoft.mshtml,版本=7.0.3300.0, 文化=中立, PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。 系统 找不到指定的文件。
我不想在生产机器上安装 Visual Studio。 我已阅读运行 C:\Program 文件的 建议 \公用文件\合并 module\vs_piaredist.exe 解决了这个问题,但我的生产盒子上不存在这个目录。 如何在生产机器上使用mshtml?
I am using mshtml to parse HTML in my ASP.NET-MVC application. Works great on my development machine, which has VS2008 Professional installed. Works great on my staging machine, which has VS Express 2008/WebDev installed. But it throws a FileNotFoundException when trying to load the COM object on the production server, which has no versions of Visual Studio.
Exception type: FileNotFoundException Exception message: Could not load file or assembly
'Microsoft.mshtml, Version=7.0.3300.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or
one of its dependencies. The system
cannot find the file specified.
I don't want to install Visual Studio on the production box. I have read a suggestion that running C:\Program files\Common Files\Merge
modules\vs_piaredist.exe solves this problem but this directory does not exist on my production box. How can I use mshtml on the production machine?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
mshtml不是依赖IE吗? 生产盒上安装的是哪个版本的 IE? 考虑升级到至少 6
Isn't mshtml IE dependent? What version of IE is installed on the production box? Consider upgrading to atleast 6
IE 是非托管代码,因此需要有一个互操作层才能从托管到非托管。 主互操作程序集 (PIA) 是通常发货的一种由供应商。 这就是为什么建议您运行 piaredist.exe
IE is unmanaged code so there needs to be a interop layer to go from managed to unmanaged. The Primary Interop Assembly (PIA) is one that is usually shipped by the vendor. This is why you're being suggested to run the piaredist.exe
使用开发机器上的 vs90_piaredist 似乎是解决方案。 互操作程序集称为 Microsoft.mshtml.dll,它位于 C:\Program Files\Microsoft.NET\Primary Interop Assemblies。 运行 vs90_piaredist 在生产计算机上创建了这个目录,并在其中放置了 5 个互操作 dll,包括 Microsoft.mshtml.dll。
此主题 对这个问题进行了一些很好的讨论。
Using vs90_piaredist from the dev machine seems to be the solution. The interop assembly is called Microsoft.mshtml.dll and it lives at C:\Program Files\Microsoft.NET\Primary Interop Assemblies. Running vs90_piaredist created this directory on the production machine, and placed 5 interop dlls in there, including Microsoft.mshtml.dll.
This thread had some good discussion on the issue.