未在Winforms桌面应用程序上注册请求的Windows运行时类型'Microsoft.Graphics.Canvas.CanvasDevice'

问题描述

我正在尝试在桌面应用程序中使用Win2D。项目正在构建中,但出现运行时错误“未注册请求的Windows运行时类型'Microsoft.Graphics.Canvas.CanvasDevice'”

我知道,要包括Win2D,我需要将引用添加到应用程序的清单文件中。

代码

private void CaptureMSFSScreen()
        {
            process = Process.GetProcesses().Where(p => p.ProcessName == "xxxxxxxx").Single();
            hwnd = process.MainWindowHandle;
            canvasDevice = new CanvasDevice();
            GraphicsCaptureItem item = CaptureHelper.CreateItemForWindow(hwnd);
            framePool = Direct3D11CaptureFramePool.Create(canvasDevice,DirectXPixelFormat.B8G8R8A8UIntnormalized,1,item.Size);
            session = framePool.CreateCaptureSession(item);

            framePool.FrameArrived += (s,a) =>
            {

                using (var frame = framePool.TryGetNextFrame())
                {
                    ProcessFrame(frame);
                }
            };
            item.Closed += (s,a) =>
            {
                StopCapture();
            };

        }

清单文件中包含以下部分:

  <file name="Microsoft.Graphics.Canvas.dll">
    <activatableClass
      name="Microsoft.Graphics.Canvas.CanvasDevice"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass      name="Microsoft.Graphics.Canvas.UI.Composition.CanvasComposition"
       threadingModel="both"
       xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.SaturationEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
       name="Microsoft.Graphics.Canvas.Effects.BlendEffect"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.GaussianBlurEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.ColorSourceEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.CompositeEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.OpacityEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>

    <activatableClass
      name="Microsoft.Graphics.Canvas.CanvasBitmap"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>
    <activatableClass
      name="Microsoft.Graphics.Canvas.Effects.BorderEffect"
      threadingModel="both"
      xmlns="urn:schemas-microsoft-com:winrt.v1"/>
  </file>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)