我曾想将我的应用程序的新版本(WPF 转换为带有桌面桥的 UWP)发布到 Microsoft Store,但它未通过认证并显示以下警告:



我有以下问题:

  • 首先,我在去年年底发布了我的应用程序的第一个版本,并且 DPI 意识没有问题。所以这是一个新的测试?
  • 由于这只是一个警告并且所有其他测试都通过了,这可能是认证过程失败的原因吗?
  • 所以我试图让我的应用程序知道 DPI...

  • 根据 this 描述,我调用了 SetProcessDpiAwarenessContext 函数并检查了所有 four 值。使用 unawareSystem aware 标志我的应用程序看起来很模糊,使用 Per Monitor 标志看起来不错,但是当我请求屏幕尺寸时,它返回原始宽度和高度,不计算比例(我有 150% 比例),所以我的窗口被定位到屏幕的错误部分。问题是,如果只有这 4 个标志要设置并且它们都没有作为默认值(不设置任何内容),那么默认设置是什么?

    好的,here 列出了 5 个标志,但它们都没有工作,就好像没有设置任何东西一样。

    非常感谢!

    最佳答案

    最后我找到了问题的解决方案:
    我没有尝试通过从系统 DLL 调用相应的方法来使我的应用程序 DPI 识别代码,而是必须将 app.manifest 文件添加到 WPF 项目中。当我以这种方式尝试时,与无效屏幕尺寸相关的问题消失了。

    Here 是一个示例,它应该包含这个 list 文件。一个非常重要的事情是 Store 没有接受 PerMonitor 设置,因为它在上面的例子中。它必须更改为 PerMonitorV2 (顺便说一下,这也是他们在错误消息中询问的内容)。

    通过将此设置添加到项目中,它通过了商店的认证。令人惊讶的是,这个警告是认证失败的原因。

    添加 list 文件后的另一件事,它应该连接到项目。您可以通过将以下代码添加到 <your_project_name>.csproj 文件(示例 here )来实现:

    <PropertyGroup>
      <ApplicationManifest>app.manifest</ApplicationManifest>
    </PropertyGroup>
    

    要查看全图,我还添加了 this 答案中的第二步。

    享受!

    关于c# - 由于 DPI 意识,微软商店认证失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60563725/

    10-13 07:52