假设我有一个基于 C# 开发的 Windows 应用程序。我想确保它适用于 32 位和 64 位。但我不想一次又一次地更改配置设置或应用程序设置。有没有办法测试这两种变体?
2 回答
有几个选项。
您可以针对
AnyCPU
. 如果你的程序是 100% C#/托管代码,没有本地依赖,这将导致它在 64 位操作系统上运行 64 位,在 32 位操作系统上运行 32 位。目标 x86。这将导致它在任何地方运行 32 位,这在 64 位 Windows 上正常工作(通过 WOW64)。如果您也使用本机(32 位)库,这也可以正常工作。
进行两个构建和两个单独的部署。这允许您使用本机代码并仍然在 64 位操作系统上运行 64 位,但工作量要大得多。
由于 32 位应用程序在 64 位操作系统上运行良好,因此很少有理由在 64 位本机上运行程序。这通常只有在您处理大量数据并且确实需要访问比 32 位进程更大的内存空间时才真正有益。在 .NET 中,这通常意味着如果要为程序使用超过 1.2-1.6gb 的 RAM,则需要构建 64 位。否则,32 位在任何地方都可以正常工作。
如果您以 AnyCPU 为目标,则大多数 .NET 程序将在 32 位或 64 位计算机上原样运行。根据目标操作系统的需要,代码将被转换为 32 位或 64 位代码。
需要小心的例外是在对非托管代码使用互操作时。
如果您对非托管代码进行互操作并需要在 64 位平台上以 64 位运行,则必须进行两次构建。
如果您对非托管代码进行互操作并且可以接受作为 32 位进程运行,则以 x86 为目标。这避免了两次构建,并将您的 .NET 代码作为 32 位进程在 32 位和 64 位平台上运行。