C#.NET中32位和64位的多目标
假设我有一个基于C#开发的windows应用程序。我想确保它在32位和64位上都能工作。但我不想一次又一次地更改配置设置或应用程序设置。有办法测试这两种变体吗?有两种选择C#.NET中32位和64位的多目标,c#,.net,C#,.net,假设我有一个基于C#开发的windows应用程序。我想确保它在32位和64位上都能工作。但我不想一次又一次地更改配置设置或应用程序设置。有办法测试这两种变体吗?有两种选择 您可以针对任何CPU。如果您的程序是100%C#/托管代码,没有本机依赖项,这将导致它在64位操作系统上运行64位,在32位操作系统上运行32位 目标是x86。这将导致它在任何地方运行32位,这在64位Windows上正常工作(通过WOW64)。如果您使用的是本机(32位)库,这也可以正常工作 进行两次构建和两次单独的部署。这
任何CPU
。如果您的程序是100%C#/托管代码,没有本机依赖项,这将导致它在64位操作系统上运行64位,在32位操作系统上运行32位由于32位应用程序在64位操作系统上运行良好,因此很少有理由以64位本机方式运行该程序。这通常只有在处理大量数据并且确实需要访问比32位进程更大的内存空间时才真正有用。在.NET中,这通常意味着如果要为程序使用超过1.2-1.6gb的RAM,则需要构建64位。否则,32位在任何地方都可以正常工作。如果您以任何CPU为目标,大多数.NET程序将在32位或64位机器上不作任何更改地运行。根据目标操作系统的需要,代码将被JIT为32位或64位代码 需要谨慎使用的例外情况是对非托管代码使用互操作 如果您对非托管代码进行互操作,并要求在64位平台上以64位运行,则必须进行两次构建
如果您对非托管代码进行互操作,并且可以接受以32位进程的形式运行,那么就以x86为目标。这避免了两个版本,并将在32位和64位平台上以32位进程的形式运行.NET代码。为什么不将其设置为32位?它是在处理大量数据还是什么?大多数32位应用程序都在64位机器上工作。基于MSIL(目标平台=任何CPU)构建将解决大多数问题。嗨,Eric,非常感谢您的知识共享,我可以请您解释对非托管或com组件的互操作如何影响吗?嗨,Reed,谢谢你的回复。那么,我能理解AnyCpu和X86之间的区别吗?如果两者的用途相同,x86将始终强制应用程序运行32位,即使您在64位系统上运行。AnyCPU将使应用程序在64位操作系统上运行64位,在32位操作系统上运行32位。对不起,现在我知道了。非常感谢Reed:)在我的应用程序中,我使用的是第三方库,目标是“AnyCPU”,其他一些dll文件目标是x86,而应用程序本身目标是x86。第三方库能否在32位机器上分发运行的应用程序。如果是,我如何解决它?