我曾想将我的应用程序的新版本(WPF 转换为带有桌面桥的 UWP)发布到 Microsoft Store,但它未通过认证并显示以下警告:
我有以下问题:
根据 this 描述,我调用了
SetProcessDpiAwarenessContext
函数并检查了所有 four 值。使用 unaware
和 System 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/