大家好 
我的一个小程序,其中引用用了Microsoft.mshtml,我本机测试通过。
然后直接把release下的文件copy发给客户以后有些客户没问题,
有些客户运行到调用mshtml的地方会出现系统找不到指定文件的错误错误提示:
Could not load file or assembly'Microsoft.mshtml,
Version=7.0.3300, Culture=neutral
PublicKeyToken=b03f5f11d50a3a' or one of its dependencies.
系统找不到指定的文件试过重装ie 也不行,
然后我试着  Regsvr32 Microsoft.mshtml.dll
提示:已加载Microsoft.mshtml.dll但没有找到DllRegisterServer输入点
无法注册这个文件我在程序中是直接添加引用-.NET-Microsoft.mshtml,然后再using mshtml;
弱弱点问一下  是不是直接DllImport就不会出现这个问题?
大家帮我支支招,这调用COM的程序到底要怎么发布给客户才不会出问题啊
谢谢了

解决方案 »

  1.   

    楼主有一小点点概念不清。首先,Microsoft.mshtml.dll并不是一个真正的COM组件,而是一个.NET为COM封装的interop assembly,里面只有COM interface信息。简单理解就是一个COM的wrapper。发布很简单,在VS里面,找到引用Microsoft.mshtml-->属性-->copy to local-->设成true,然后你的程序带着这个dll一起发布就可以了。
      

  2.   

    补充一下,因为Microsoft.mshtml.dll并不是COM,所以不能Regsvr32 Microsoft.mshtml.dll。而且Microsoft.mshtml.dll也不是导出API的动态连接库,更不能DllImport。一句话,直接引用就可以了。
      

  3.   

    1楼的方法,我之前就试过了,不能解决问题
    不过我现在问题已经解决了,通过重新导出mshtml.dll遇到相同问题的朋友可以参考
    http://www.cnblogs.com/djian/archive/2010/09/20/1831858.html