为什么我的Windows清单中有重复的条目?

为什么我的Windows清单中有重复的条目?,windows,manifest,Windows,Manifest,以下清单已添加到my.exe: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> <

以下清单已添加到my.exe:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
        <ms_asmv2:security>
            <ms_asmv2:requestedPrivileges>
                <ms_asmv2:requestedExecutionLevel level="asInvoker" />
            </ms_asmv2:requestedPrivileges>
        </ms_asmv2:security>
    </ms_asmv2:trustInfo>
  <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
但当我查看清单时,例如使用Kenny Kerr的清单查看应用程序时,windowsSettings和dpiAware标记似乎是重复的:

 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
... general properties ...
     <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
          <dpiAware>true</dpiAware> 
        </asmv3:windowsSettings>
     </asmv3:application>
     <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
         <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
          <dpiAware>true</dpiAware> 
         </asmv3:windowsSettings>
     </asmv3:application>
  </assembly>

你知道为什么会发生这种情况吗?它会引起任何问题吗?

在做了大量的实验并尝试了不同版本的mt.exe来嵌入一些网站上建议的清单之后,我注意到了一种模式;在我看到的所有示例中,清单文件名似乎总是与项目或可执行文件名匹配,但附加了“.manifest”

我的清单文件名不完全匹配,因此我重命名它以匹配我的应用程序的Visual Studio项目名称。我还将清单工具属性中的“附加清单文件”选项更改为“$ProjectDir$ProjectName.Manifest”,而不是以前的硬编码文件名


这些更改一起起作用,并为我提供了一个具有正确嵌入清单的可执行文件。

附加清单文件导致清单与自动生成的清单合并。app.exe.manifest是最终生成的清单的通用名称,因为使用此名称,它可以放置在与“app.exe”相同的文件夹中,并由系统加载,而不必作为资源嵌入。这也是为什么选择完全相同的名称对于清单片段(即通过附加清单文件添加的清单)是一个坏主意,因为您现在有一部分最终清单伪装为完整清单。