如何在Visual Studio 2013中获取要生成的清单文件

Ste*_*olt 3 visual-studio-2013

我有两个由其他人编写的项目,一个是WPF应用程序,另一个是Console应用程序.WPF应用程序与可执行文件一起生成.exe.manifest文件,以某种方式使用项目设置自动生成(它未明确声明为app.manifest).但是控制台应用程序没有生成一个.如何设置它以生成一个?

Dav*_*e S 6

对于Visual Studio 2013中的C/C++,我发现了两种方法:

现代方式:合并其他XML

  1. 转到(属性)>链接器>清单并将Generate Manifest更改为YES.您还可以在此处设置UAC/admin权限,而无需创建自己的清单XML.

  2. 将新XML文件添加到项目中,并在程序集包装器标记内包含所需的其他清单条目,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
    <!--The ID below indicates application support for Windows 8.1 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    <!-- 10.0 -->
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
    </application>
    </compatibility>
    </assembly>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 转到(属性)>清单工具>输入和输出,并使用Additional Manifest Files设置添加步骤2中的XML文件

手动方式:使用自定义RC文件

如果将第二个手动编辑的RC文件添加到项目中,则可以包含清单XML文件.

  1. 将RC文件添加到项目中
  2. (项目)>链接器将清单生成关闭,因为您不希望Visual Studio在链接时创建自己的清单.
  3. 在RC文件中,添加这些行

    #define MANIFEST_RESOURCE_ID 1
    MANIFEST_RESOURCE_ID RT_MANIFEST "res\\my-manifest-xml.manifest"
    
    Run Code Online (Sandbox Code Playgroud)

为此,您需要确保XML文件包含清单所需的所有标记.

测试结果

来自Systenternals的SigCheck有一个-m选项,可以显示清单.

SigCheck - SysInternals - TechNet