Lync:AVModality.VideoChannel的VideoWindows在成功调用BeginStart后为空(COMException HRESULT:0x80029C4A TYPE_E_CANTLOADLIBRARY)

我们目前正在尝试将Lync通信(Lync SDK 2010)合并到我们的应用程序中,我们遇到了AVModalityVideoChannelVideoWindowsCaptureVideoWindowRenderVideoWindow )的问题:即使在成功调用BeginStart之后,它们也始终为null。 这种联系是明确的。 我们可以谈。 我们自己的video显示在远程Lync客户端中。 AVModalityStateConnectedVideoChannelStateConnectingReceiveSend

我们何时以及如何尝试访问它们并不重要:直接在BeginStart之后,在BeginStartAsyncCallback中,响应各种状态更改或响应外部触发器(用户单击事件); 在主/ UI线程或事件/回调线程中。 两个video窗口始终为空。

在示例应用程序“%PROGRAMFILES%\ Microsoft Lync \ SDK \ Samples \ AudioVideoConversation”中,一切都按预期工作:一旦BeginStart完成,我们就可以访问非空video窗口。 在我们的小型独立原型项目中,它也有效。 但在我们的实际应用中,它没有。

我们已经对所有内容进行了双重检查,但我们确实已经完成了可能导致此问题的想法。

任何想法,任何提示? 我们应该注意什么?

(链接到相应的MSDN论坛post)

更新 (2012年7月4日,欧洲中部时间15:46):

当我们看一下VideoChannel的成员时,我们发现内部在“Microsoft.Office.Uc”中发生了COMException:加载DLL时出错,HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY)。 所附屏幕截图中的更多细节。

Screenshot of debugging session showing the exception

我们对这个错误进行了一些研究,但没有发现任何对我们有用的东西。 是什么导致exception?

更新 (2012年7月9日,欧洲中部时间16:43):

我们做了一些进一步测试……

我们的软件包含一个主要应用程序和许多通过MEF加载的类似插件的“应用程序”。 我们创建了一个可以进行video通话的最小测试应用程序:video窗口不起作用(如预期的那样)。 但是当我们采用相同的代码并在我们的架构之外创建一个单独的解决方案时,它确实有效。 所以,这是环境的问题,而不是代码。

起初,我们怀疑MEF可能是问题所在。 因此,我们将lync代码入侵到我们的主应用程序中 – 绕过整个应用程序架构。 还是行不通。

然后我们一点一点地切掉整个系统,直到我们最终达到了它的function。 在多次跟踪错误的曲目之后,我们终于找到了罪魁祸首… Quartz.NET !

由于一些奇怪的原因,仅仅存在Quartz.dll v.1.0.3.3的程序集引用,即使没有单行Quartz代码,也会导致video窗口不起作用。 难以置信,但100%可重复:如果我们采用前面提到的测试解决方案,除了添加参考之外什么也不做,它就会停止工作。

知道这样的事情怎么可能?

我们解决了! 的种类。 对Quartz.NET DLL的引用不知何故导致了这个问题。 更新后的问题中的更多细节。

目前,我们已经删除了使用Quartz的组件。 我们目前不需要它。

但是我仍然对进一步的输入感兴趣,仅仅引用如何导致这样的问题。