Show/Hide Toolbars

XSharp

 

使用 -win32manifest 选项可指定一个用户定义的 Win32 应用程序清单文件,该文件将嵌入到项目的可移植可执行文件(PE)中。

语法

-win32manifest: filename  

参数

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

备注

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

 

注意

这个选项和 -win32res 选项是互斥的。如果尝试在同一命令行中同时使用这两个选项,将导致生成错误。

在 Windows Vista 的用户帐户控制功能下,没有指定请求的执行级别的应用程序将受到文件/注册表虚拟化的影响。

如果满足以下条件之一,您的应用程序将受到虚拟化的影响:

 

如果使用了-nowin32manifest 选项,并且没有在以后的生成步骤中提供清单,或通过使用 -win32res 选项作为 Windows 资源 (.res) 文件的一部分提供清单,则可以使用 -nowin32manifest 选项。

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

 

Visual Studio 会创建一个默认的 .manifest 文件,并将其与可执行文件一起存储在调试和发布目录中。你可以在任何文本编辑器中创建自定义清单,然后将文件添加到项目中。或者,在解决方案资源管理器中右键单击项目图标,单击添加新项,然后单击应用程序清单文件。添加新的或现有的清单文件后,它将出现在清单下拉列表中。

 

您可以使用 -nowin32manifest 选项,将应用程序清单作为自定义生成后步骤或 Win32 资源文件的一部分提供。如果希望在 Windows Vista 上对应用程序进行文件或注册表虚拟化,也可以使用相同的选项。这将防止编译器在可移植可执行文件 (PE) 中创建和嵌入默认清单。

示例

下面的示例显示了 X# 编译器插入 PE 的默认清单。

注意

编译器会在 xml 中插入一个标准应用程序名称 "MyApplication.app"。这是一种变通方法,可使应用程序在 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>