如何在Windows清单文件中正确使用命名空间?
我正在用GNU gcc MinGW64在 Windows上用C 编程,使用Codeblocks。我的项目中嵌入了一个Windows清单文件和一个资源脚本文件。我想让我的程序的GUI尽量简洁,同时在可能的情况下对较旧版本的Windows保持最大的向后兼容性。我想包含的WindowsSettings元素包括dpiAware、dpiAwareness、gdiScaling、highResolutionScrollingAware和 ultraHighResolutionScrollingAware,或者其中的某些子集,以防某些在无法实现向后兼容的情况下覆盖其他元素。我在这里读到:
这些五个元素的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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。