none
C# winform自定义控件添加了Windows Media Player,现在一运行到这个界面就报文件找不到异常,未能加载文件或程序集“AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。

    问题

  • === 预绑定状态信息 ===
    日志: 用户 = USER-20161119NV\Administrator
    日志: DisplayName = Interop.WMPLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
     (Fully-specified)
    日志: Appbase = English/SelfPhoto/bin/Debug/
    日志: 初始 PrivatePath = NULL
    调用程序集: AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null。
    ===
    日志: 此绑定从 default 加载上下文开始。
    日志: 正在使用应用程序配置文件: D:\monitor_camera_jpegThrough English\SelfPhoto\bin\Debug\SelfPhoto.vshost.exe.Config
    日志: 使用主机配置文件:
    日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。
    日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
    日志: 尝试下载新的 URL  English/SelfPhoto/bin/Debug/Interop.WMPLib.DLL。
    日志: 尝试下载新的 URL English/SelfPhoto/bin/Debug/Interop.WMPLib/Interop.WMPLib.DLL。
    日志: 尝试下载新的 URL  English/SelfPhoto/bin/Debug/Interop.WMPLib.EXE。
    日志: 尝试下载新的 URL  English/SelfPhoto/bin/Debug/Interop.WMPLib/Interop.WMPLib.EXE。
    2016年4月8日 9:27

全部回复

  • Media Player  在你这里调用是用的 .Net 访问ActiveX 组件的原理,所以你的interop 程序集只是AX的接口封装,里面并不包含实际的Media Player逻辑功能,所以它需要在运行时取真正地查找计算机上实际的组件。

    但是,你要注意,从.Net 4开始,多一个新功能 embedded interop , 你可以在你的项目引用上,这个Interop.WMPLib右击属性可以看到。 这个功能他可以将interop中生成的接口和类型内嵌到你的程序集中,这样就可以方便你来部署你的程序,可以不需要另外再拷贝一份interop到目标机器。但是,这个功能有时候也会有点问题,所以你可以尝试禁用他,然后再运行试试

    相关资料:

    https://msdn.microsoft.com/en-us/library/5dxz80y2(v=vs.100).aspx

    https://msdn.microsoft.com/en-us/library/3y76b69k(v=vs.100).aspx


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2016年4月8日 9:49
  • 还有可能就是你的程序是否编译成符合你本地WMP库的平台,32位64位尝试切换下。

    还有就是检查本地是否注册了WMP 的COM组件


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2016年4月8日 9:50
  • 谢谢,v4.0的嵌入互操作性默认是关闭的.

    我这个程序是要改成英文版。中文版的运行上次出过一次问题,我把debug下的pdb文件删除后好了。

    我把中文版的复制出来一份放到不同目录下,运行就报这个异常,我尝试再次删除pdb文件,还是报异常。

    引用的两个dll,都放到debug根目录下了。引用里也添加了。

    同一台电脑上,两个程序一样的,唯一的就是界面显示一个中文一个英文。我应该怎么解决呢?

    2016年4月9日 1:25
  • Hi Xie2016,

    >>同一台电脑上,两个程序一样的,唯一的就是界面显示一个中文一个英文。我应该怎么解决呢?

    错误应该和pdb文件无关,pdb是断点文件,也许你可以试试用下面的代码来设置语言:

      Thread.CurrentThread.CurrentCulture =  CultureInfo.CreateSpecificCulture("en");

    Regards,

    Moonlight


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.


    2016年4月18日 6:33