gpt4 book ai didi

c# - 由于 DPI 意识,Microsoft Store 认证失败

转载 作者:行者123 更新时间:2023-12-02 08:34:39 31 4
gpt4 key购买 nike

我曾想将我的应用程序的新版本(WPF 通过 Desktop Bridge 转换为 UWP)发布到 Microsoft Store,但未能通过认证,并出现以下警告:

  • File **.exe neither has PerMonitorV2 manifested in the manifest nor calls into DPI Awareness APIs for ex: user32!SetProcessDpiAwarenessContext or user32!SetThreadDpiAwarenessContext.
  • The app *** is not DPI Aware.

我有以下问题:

  1. 首先,我在去年年底发布了应用程序的第一个版本,DPI 感知没有任何问题。所以这是一个新的测试?

  2. 由于这只是一个警告,并且所有其他测试都已通过,这可能是认证过程失败的原因?

  3. 所以我尝试让我的应用程序 DPI 感知...

基于this描述 我调用了 SetProcessDpiAwarenessContext 函数并检查了所有 four值(value)观。使用不知道系统感知标志时,我的应用程序看起来很模糊,使用每个监视器标志时看起来不错,但是当我请求屏幕尺寸时,它返回原始宽度和高度,不计算比例(我有 150% 比例),因此我的窗口被定位到屏幕的错误部分。问题是,如果只需要设置这 4 个标志,并且没有一个标志作为默认值(不设置任何内容),那么默认设置是什么?

好的,here列出了 5 个标志,但它们都不起作用,就好像没有设置任何内容一样。

非常感谢!

最佳答案

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

Here是应包含此 list 文件的示例。很重要的一点是,商店不接受PerMonitor设置如上例所示。必须更改为 PerMonitorV2 (顺便说一句,这也是他们在错误消息中询问的内容)。

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

添加 list 文件后,还有一件事,它应该连接到项目。您可以通过将以下代码添加到 <your_project_name>.csproj 来完成此操作文件(例如 here ):

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

为了查看全貌,我还添加了this中的第二步回答。

享受吧!

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

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com