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

时间:2015-02-05 14:52:30

标签: visual-studio-2013

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

1 个答案:

答案 0 :(得分: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>
    
  3. 转到(属性)&gt; Manifest工具&gt;输入和输出,并使用Additional Manifest Files设置

  4. 添加步骤2中的XML文件

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

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

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

      #define MANIFEST_RESOURCE_ID 1
      MANIFEST_RESOURCE_ID RT_MANIFEST "res\\my-manifest-xml.manifest"
      
    4. 为此,您需要确保您的XML文件包含清单所需的所有标记。

      测试结果

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

      SigCheck - SysInternals - TechNet