我希望能够分发一个用户可以配置为32位或64位运行的可执行文件版本。该服务将具有32位主机进程,该进程将读取配置并以32位或64位启动新进程。我还没有确定如何/如果针对任何CPU的可执行文件可以在64位Windows下作为32位进程启动。
答案 0 :(得分:3)
这没什么意义。如果您的应用程序可以作为32位进程运行,并且不需要额外的虚拟内存空间,那么将它作为64位进程运行就毫无意义。
你也不能轻易控制它。它需要更改.exe标头中的值。 Corflags.exe实用程序可以执行此操作,但您无法分发它。在技术上可以自己黑客攻击标题,但非常非常丑陋。最终的障碍是您通常不具有在正确安全的计算机(即UAC)上修改.exe文件所需的写访问权限。如果你真的,真的需要这样做,那么只需部署.exe
的两个副本你可以通过写一个非常微不足道的bootstrapper .exe来做。它需要做的就是Assembly.Load()主要的.exe并调用它的Program.Main()方法。构建它的两个版本。
答案 1 :(得分:0)
定位任何CPU意味着您的目标是构建计算机的操作系统。因此,如果您的构建计算机是32位,那么任何CPU将构建32位输出,如果您的构建计算机是64位,那么您将获得64位输出。这与您部署的计算机无关。
为了实现您的目标,您将需要2个exe副本,一个作为32位版本,另一个作为64位。您可以通过将Target平台分别设置为32位和64位来完成此操作。再一次,如果您定位任何CPU,Visual Studio将选择构建机器上当前的操作系统。