声明多平台环境的清单

时间:2013-07-05 21:40:07

标签: c# manifest

我正在修改很久以前为x86架构平台(win32)构建的C#项目的清单,以便在64位和32位机器上运行。

这是原始的清单文件:

<?xml version="1.0" encoding="utf-8"?>
 <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="app.exe" processorArchitecture="X86" type="win32"/>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

我找不到的是如何让X86和X64(win32和win64)在processorArchitecture和类型字段中工作?

1 个答案:

答案 0 :(得分:4)

您可以使用

processorArchitecture="*"

表示支持所有架构。

如果您的应用程序是32位应用程序,那么您可以使用

processorArchitecture="x86"

使用这样的清单,您的进程在64位系统上就可以了,因为它将在WOW64仿真器下作为32位进程运行。

对于在x64上运行的64位应用程序,请使用

processorArchitecture="amd64"

最后,对于64位Itanium,值为

processorArchitecture="ia64"

对于type属性,值始终为type="win32"

文档(可以说有点稀疏)在这里:http://msdn.microsoft.com/en-us/library/windows/desktop/aa374191.aspx

对于它的价值,我觉得你似乎不需要改变任何东西。如果您使用processorArchitecture="x86"清单构建了32位可执行文件,那么该可执行文件已经完全配置为32位和64位系统。请记住,这里是流程的体系结构,而不是运行流程的系统的体系结构。即使在64位系统上,您的32位可执行文件也可以作为32位进程运行。