我因为机器配置太低,所以就装了SharpDevelop2.1.0.2429,居然无法引用com中的Microsoft HTML Object Library(mshtml.tlb),添加引用SharpDevelop就死掉。
而同样的系统配置(干净的xpsp3 + .NET Framework 2.0)装VS2005就没问题。
我试了SharpDevelop_3.2.0.5777 + .NET Framework 3.5也不行。
C#2005中文速成版同样不行。
有人遇到同样的问题吗?这是怎么回事呢?

解决方案 »

  1.   

    打开引用了mshtml的项目时提示“无法找到类型库“MSHTML”的包装程序集。”
    从其他正常的机器上编译好这个项目放到我的机器上也不能运行。
      

  2.   

    网上有个办法是使用Microsoft.mshtml.dll
    在安装了VS2005的机器上有:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.mshtml.dll
    复制到本机相应位置或项目里引用此dll就可以了
    但是这不是com组件,我是在com项目里用作BHO插件,编译到是没有问题,运行时提示如下:
    错误:无法将类型为“System.__ComObject”的com对象强制转换为类类型“mshtml.HTMLDocumentClass”。进入clr且不支持IProvideClassInfo或没有注册任何互操作程序集的com组件都将包装在__ComObject类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础com组件支持接口IID的QueryInterface调用,就能将这些实例强制转换为接口。
      

  3.   

    不会吧? Sharpdevelop不能引用 Com组件吗?With Visual Studio, adding a reference to "Microsoft Word 11.0 Object Library" automatically adds references to the dependent COM components:Microsoft Visual Basic for Applications Extensibility 5.3 
    Microsoft Office 11.0 Object LibrarySharpDevelop should do the same.
      

  4.   

    引用Microsoft Internet Controls(SHDocVw.dll)都没有问题
    mshtml网上也有很多遇到麻烦的,我还没找到解决方法
      

  5.   

    无法将类型为“System.__ComObject”的com对象强制转换为类类型“mshtml.HTMLDocumentClass”。
    这个问题解决了,引用Microsoft.mshtml,把HTMLDocumentClass改成IHTMLDocument2就可以了。
    使用mshtml时全部用I开头的:IHTMLWindow2、IHTMLDocument2、IHTMLElement、IHTMLFormElement等等。
    SharpDevelop和C#2005中文速成版还是不能引用com组件Microsoft HTML Object Library(mshtml.tlb),所以程序里必须要带一个约8M的Microsoft.mshtml.dll。
    期待高手来解决这个问题!