【发布时间】:2012-07-03 14:50:01
【问题描述】:
我们目前正在尝试将 Lync 通信 (Lync SDK 2010) 合并到我们的应用程序中,我们遇到了与 AVModality 的 VideoChannel 的 VideoWindows(CaptureVideoWindow、RenderVideoWindow)有关的问题: 它们始终为空,即使在成功调用BeginStart 之后也是如此。连接肯定建立了。我们可以谈。我们自己的视频显示在远程 Lync 客户端中。 AVModalityState 是 Connected。 VideoChannelState 从 Connecting 到 Receive 到 Send。
我们何时以及如何尝试访问它们并不重要:直接在BeginStart 之后,在BeginStart 的AsyncCallback 中,响应各种状态变化或响应外部触发(用户点击事件) ;在主/UI线程或事件/回调线程中。两个视频窗口始终为空。
在示例应用程序“%PROGRAMFILES%\Microsoft Lync\SDK\Samples\AudioVideoConversation”中,一切正常:BeginStart 完成后,我们可以访问非空视频窗口。在我们的小型独立原型项目中,它也可以工作。但在我们的实际应用中,它不会。
我们已经仔细检查了所有内容,但对于可能导致此问题的原因,我们确实已经没有什么想法了。
任何想法,任何提示?我们应该注意什么?
(Link to corresponding MSDN forum thread)
更新(2012 年 7 月 4 日,欧洲中部时间 15:46):
当我们查看 VideoChannel 的成员时,我们发现“Microsoft.Office.Uc”内部发生了 COMException:加载 DLL 时出错,HRESULT:0x80029C4A (TYPE_E_CANTLOADLIBRARY)。更多详情请关注attached screenshot。
我们对此错误进行了一些研究,但没有发现任何对我们有用的东西。任何想法是什么导致异常?
更新(2012 年 7 月 9 日,欧洲中部时间 16:43):
我们做了一些进一步的测试......
我们的软件由一个主应用程序和许多通过MEF 加载的类似插件的“应用程序”组成。我们创建了一个进行视频通话的最小测试应用程序:视频窗口不起作用(如预期的那样)。但是,当我们采用相同的代码并在我们的架构之外创建一个单独的解决方案时,它确实起作用了。所以,这是环境的问题,而不是代码的问题。
起初,我们怀疑 MEF 可能是问题所在。因此,我们将 lync 代码侵入到我们的主应用程序中 - 绕过了整个应用程序架构。还是不行。
然后我们一点一点地切掉整个系统,直到我们最终达到它可以工作的地步。走错了好几遍,终于找到了罪魁祸首……Quartz.NET!
由于某些奇怪的原因,仅仅存在对 Quartz.dll v.1.0.3.3 的程序集引用,即使没有一行 Quartz 代码,也会导致视频窗口无法工作。难以置信,但它是 100% 可重现的:如果我们采用前面提到的测试解决方案,只添加参考,它就会停止工作。
知道这样的事情怎么可能吗?
【问题讨论】:
标签: c# video lync lync-2010 comexception