3

我正在修改很久以前为 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)在处理器架构和类型字段中工作?

4

1 回答 1

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 位进程运行。

于 2013-07-05T21:49:20.147 回答