如何解决缺少类的ActivatableAttribute

时间:2015-01-20 01:08:33

标签: c# windows-phone-8.1 lumia-imaging-sdk

我们在Windows Phone 8.1运行时应用中使用Lumia.Imaging.SDK 2.0。出于某种原因,Microsoft无法在Lumia.Imaging.RandomAccessStreamImageSource类上设置ActivatableAttribute。因此,此类不会在appxmanifest.xml中标记为ActivatableClass。当然,尝试实例化此类会导致以下错误。

  

类型' System.TypeLoadException'的第一次机会异常。发生了   在MyApp.exe中请求的Windows运行时类型   ' Lumia.Imaging.RandomAccessStreamImageSource'没有注册。

有没有人知道如何在运行时将此类注册为可从C#激活?或者,有没有办法去" hack" Lumia.Imaging.winmd包含ActivatableAttribute?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。这是工作解决方案。 手动将这些行添加到 Package.appxmanifest (使用任何文本编辑器):

  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>Lumia.Imaging.dll</Path>
        <ActivatableClass ActivatableClassId="Lumia.Imaging.RandomAccessStreamImageSource" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
  </Extensions>

</Package>

确保您的主(可执行)库引用了Lumia.Imaging.dll

答案 1 :(得分:0)

确保您拥有最新版本。我从MSDN下载了快速入门,它在手机和桌面Windows上都能很好地工作(你必须将Lumia NuGet包从2.0.178-alpha更新到2.0.184)。

示例代码使用RandomAccessStreamImageSource没有问题(通过调试调试器中的代码行进行验证)。