/win32manifest(导入自定义 Win32 清单文件)(C# 编译器选项)

更新:2007 年 11 月

使用 /win32manifest 选项可以指定要嵌入到项目的可移植可执行 (PE) 文件中的用户定义的 Win32 应用程序清单文件。

/win32manifest: filename

参数

  • filename
    自定义清单文件的名称和位置。

备注

默认情况下,Visual C# 编译器嵌入指定“asInvoker”的请求执行级别的应用程序清单。它在生成可执行文件的文件夹中创建清单,如果使用的是 Visual Studio,此文件夹通常为 bin\Debug 或 bin\Release。如果希望提供自定义清单(例如指定“highestAvailable”或“requireAdministrator”请求执行级别),请使用此选项指定文件的名称。

说明:

此选项与 /win32res(导入 Win32 资源文件)(C# 编译器选项)选项是互相排斥的。如果尝试在同一命令行中同时使用这两个选项,则会收到一个生成错误。

如果应用程序没有用于指定请求执行级别的应用程序清单,则会受到 Windows Vista 中的“用户帐户控制”功能下的文件/注册表虚拟化的影响。有关虚拟化的更多信息,请参见 Windows Vista Developer Story:针对用户帐户控制的 Windows Vista 应用程序开发要求

如果满足下列任一条件,则应用程序会受到虚拟化的影响:

  • 使用了 /nowin32manifest 选项,并且在随后的生成步骤中未提供清单,或未通过使用 /win32res 选项在 Windows 资源 (.res) 文件中提供清单。

  • 提供的自定义清单未指定请求执行级别。

Visual Studio 创建默认的 .manifest 文件,并将该文件与可执行文件一起存储在 debug 和 release 目录中。可以用任意文本编辑器创建一个清单,然后将该文件添加到项目中,以此添加自定义清单。或者,也可以右击“解决方案资源管理器”中的“项目”图标,单击“添加新项”,然后单击“应用程序清单文件”。添加完新的或现有清单文件后,该文件将显示在“清单”下拉列表中。有关更多信息,请参见“项目设计器”->“应用程序”页 (C#)

提供应用程序清单的操作,可以作为自定义后期生成步骤,也可以通过使用 /nowin32manifest(不包含 Win32 清单)(C# 编辑器选项) 选项作为 Win32 资源文件的组成部分。如果希望应用程序受到 Windows Vista 中的文件或注册表虚拟化的影响,请使用该选项。这会阻止编译器在可移植可执行 (PE) 文件中创建和嵌入默认清单。

示例

下面的示例演示 Visual C# 编译器插入到 PE 中的默认清单。

说明:

编译器将一个标准应用程序名称“MyApplication.app”插入到 xml 中。这是一种使应用程序可以在 Windows Server 2003 Service Pack 3 上运行的解决方法。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

请参见

参考

/nowin32manifest(不包含 Win32 清单)(C# 编辑器选项)

其他资源

C# 编译器选项

项目属性 (Visual Studio)