我正在修改很久以前为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和类型字段中工作?
答案 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位进程运行。