错误SIPEPS,版本=5.0.0.0 UCMA 4.0 VS2010/VS2013

7
我曾经在VS 2013和VS 2010上开发了一个UCMA 4.0应用程序。当运行该项目时,我收到以下错误信息:

无法加载文件或程序集“SIPEPS, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其某个依赖项。系统找不到指定的文件。

我使用了.NET 4,并将目标构建平台设置为x64。通过dependwalker_x64进行检查,没有文件丢失。我还使用了示例中的App.config文件,但它没有起作用,所以我已经按照以下方式更改了App.config文件:
<runtime>
<assemblyBinding>
  <dependentAssembly>
    <assemblyIdentity name="SIPEPS" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

我该如何解决这个问题?非常感谢任何帮助!

4个回答

19

这个异常非常令人困惑,因为UCMA项目不需要显式引用此SIPEPS DLL,即使您将DLL定位并移动到应用程序的同一目录中,您通常也会遇到此异常。

事实证明,这通常是由以下两种情况之一引起的:

  1. 您针对了错误版本的.NET Framework。
  2. 您选择了错误类型的CPU。

在Visual Studio中打开项目属性,确保选择了.NET Framework 4.5。

如果您没有运行Visual Studio 2012,您有一个稍微更大的问题,

因为您不能在Visual Studio 2010及更早版本中使用.NET 4.5。如果之前选择了较早版本的框架,请进行更改,重新构建项目,然后再试一次。UCMA 4.0将.NET 4.5列为要求。

如果您仍然遇到异常,请检查目标平台,并确保所有项目都是Any CPUx64

自3.0版本以来,UCMA仅适用于64位计算机,有时会发生意外将项目设置为x86的情况,因此会尝试在启动时加载32位版本的SIPEPS.dll。好吧,没有32位版本的SIPEPS.dll;因此,异常有些误导性。

参考资料


1
非常感谢,我会再试一次。 - Neo
3
在UCMA 5.0中,我实际上需要明确将目标平台设置为x64才能使其工作。任何CPU都不够用。 - Tsahi Asher

3

编辑:

如果您尝试在非 Lync 服务器上安装 UCMA 应用程序,则必须安装 RuntimeApi。如果您尝试在 Lync/Skype 服务器上运行 UCMA,则无需安装 RuntimeApi,您应该尝试上面的答案,即重新编译为 32/62/auto...

如果重新编译不能解决问题,也许您缺少 UCMA API 运行时。

安装/重新安装

Unified Communications Managed API 4.0 Runtime for SIPEPS Version=5.0.0.0

Unified Communications Managed API 5.0 Runtime for SIPEPS Version=6.0.0.0

(与正确的伙伴共舞 - UCMA SDK 4.0/5.0 Microsoft.Rtc.Collaboration.dll)

运行时安装要求:

PS > Install-WindowsFeature server-media-foundation

在你想要运行它的目标/主机机器上(这可能与任何Lync/SKF领域无关),或在开发机器上重新编译以适应降级/升级。

2

如果您的应用程序服务器未正确配置UCMA应用程序,则可能会收到此错误消息。

特别是,如果复制失败,则会出现此消息。要查看复制状态,请运行get-csManagementStoreReplicationStatus,并确保“UpToDate”字段对于您的应用程序服务器为true。


1

除了tharif的好回答之外,注意在调试模式和发布模式下都必须将平台更改为x64。不同模式下平台可能会有所不同。我在VS2015中使用UCMA4、.net4.5时遇到了这样的问题。在调试模式下我的应用程序运行良好,但在发布版本中它会因异常“无法加载文件或程序集SIPEPS”而失败。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接