如何在Windows清单文件中正确使用命名空间?

后端开发 2026-07-12

我正在用GNU gcc MinGW64在 Windows上用C 编程,使用Codeblocks。我的项目中嵌入了一个Windows清单文件和一个资源脚本文件。我想让我的程序的GUI尽量简洁,同时在可能的情况下对较旧版本的Windows保持最大的向后兼容性。我想包含的WindowsSettings元素包括dpiAware、dpiAwareness、gdiScaling、highResolutionScrollingAware和 ultraHighResolutionScrollingAware,或者其中的某些子集,以防某些在无法实现向后兼容的情况下覆盖其他元素。我在这里读到:

Windows清单文件架构

这些五个元素的XML命名空间是什么。利用这些信息,我已经创建了以下5 个清单,每一个都似乎能工作:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2013/WindowsSettings">
      <highResolutionScrollingAware>true</highResolutionScrollingAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2013/WindowsSettings">
      <ultraHighResolutionScrollingAware>true</ultraHighResolutionScrollingAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

我的问题是,如何把这5 个元素放到一个清单中,特别是应该把各种XML命名空间放在何处?

解决方案

以下是在一个清单中把这5 个元素组合在一起的方法

<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
          manifestVersion="1.0"
          xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings
        xmlns:ws05="http://schemas.microsoft.com/SMI/2005/WindowsSettings"
        xmlns:ws13="http://schemas.microsoft.com/SMI/2013/WindowsSettings"
        xmlns:ws16="http://schemas.microsoft.com/SMI/2016/WindowsSettings"
        xmlns:ws17="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <ws05:dpiAware>true/PM</ws05:dpiAware>
      <ws16:dpiAwareness>PerMonitorV2 PerMonitor</ws16:dpiAwareness>
      <ws17:gdiScaling>true</ws17:gdiScaling>
      <ws13:highResolutionScrollingAware>true</ws13:highResolutionScrollingAware>
      <ws13:ultraHighResolutionScrollingAware>true</ws13:ultraHighResolutionScrollingAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章