none
求助:Interop.SHDocVw调用异常 RRS feed

  • 问题

  • System.BadImageFormatException: Could not load file or assembly 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format. File name: 'Interop.SHDocVw, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null' at Cloud.WebMonitor.WindowsFormClient.WebMonitorClient.MonitorImmediate(List`1 taskList) at Cloud.WebMonitor.WindowsFormClient.WebMonitorClient.timerTask_Tick(Object sender, EventArgs e) WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

    这是异常信息,大家帮忙分析下是什么原因,谢谢!


    姜敏
    2011年5月16日 8:43

答案

全部回复

  • 您好

    請參考 Could not load file or assembly Interop.SHDocVw

    請將 AxInterop.ShDocVw.dll 和 Interop.ShDocvw.dll 移除並重新加入參考


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已标记为答案 姜敏 2011年5月19日 3:11
    2011年5月16日 9:06
  • 好像不是这个原因,因为我在物理机器上安装没有出现这种异常,就是说我在开发时都不会报异常,只是在有些虚似机上会出现,同一个MSI程序在有的机器上是正常的,有些不行。

     

    补充说明:我在我机器上运行没有问题,32系统,有问题的是一台虚似机,64位系统


    姜敏
    • 已标记为答案 姜敏 2011年5月19日 3:10
    • 取消答案标记 姜敏 2011年5月19日 3:10
    2011年5月16日 9:13
  • 姜敏,

    您好!据我所知,BadImageFormatException 常常是由于 系统是x86 x64引起的,当您尝试下载为一个不恰当的系统下载一个程序集时就会引起这个错误。

    请按小歐建议的把那两个dll删除,这样应该您的程序会自动从合适的系统的选择相应的dll

    您可以看看这个帖子:

    http://social.msdn.microsoft.com/Forums/zh-SG/sqlintegrationservices/thread/ef65ebb9-f269-4524-9692-f14e1a49d92b

    如果您还有什么问题,请让我们知道。

     

    Lucy


    Lucy Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 姜敏 2011年5月19日 3:11
    • 取消答案标记 姜敏 2011年5月19日 3:11
    2011年5月19日 3:04
    版主
  • 谢谢两位的回答,其实这个问题我已经解决了,问题的原因并没有出现在机器本身的DLL上,我项目中的DLL并没有引用操作系统下的DLL,而是复制一份到程序中,DLL没有任何问题,问题在于我的客户端winform的CPU类型默认是any cpu,由于Interop.ShDocvw.dll是32位产物,所以在32位系统中没有问题,但当此程序部署到64位机器上时,就会出现加载此COM失败,我的解决方案就是修改CPU类型为x86,这样就OK了。
    姜敏
    2011年5月19日 3:09
  • 在引用了dll在属性里面设置复制到目录为true
    2014年9月1日 3:41