如何解决缺少 class 的 ActivatableAttribute

How to workaround missing ActivatableAttribute for a class

我们在 Windows Phone 8.1 Runtime 应用程序中使用 Lumia.Imaging.SDK 2.0。出于某种原因,Microsoft 未能在 Lumia.Imaging.RandomAccessStreamImageSource class 上设置 ActivatableAttribute。因此,此 class 不会在 appxmanifest.xml 中被标记为 ActivatableClass。当然,尝试实例化此 class 会导致以下错误。

A first chance exception of type 'System.TypeLoadException' occurred in MyApp.exe Requested Windows Runtime type 'Lumia.Imaging.RandomAccessStreamImageSource' is not registered.

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

感谢您的帮助。

确保您拥有最新版本。我从 MSDN 下载了 Quickstart,它在 Phone 和桌面 Windows 上都能完美运行(不过你必须将 Lumia NuGet 包从 2.0.178-alpha 更新到 2.0.184 ).

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

我遇到了同样的问题。这是工作解决方案。 手动将这些行添加到 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

的引用