我们已经安装了一个C#控制台应用程序作为Windows服务。目标64位计算机正在运行Windows Server 2012.我们使用64位installutil实用程序:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>installutil -i C:\Services\MainService\Service.exe
但是,当我看到进程在任务管理器中运行时,它显示它以32位进程运行:
为什么会这样,以及如何让进程以64位运行?
我在这里看到了这个问题,但还没有人回答:
答案 0 :(得分:0)
我最终做的是使用CorFlags.exe从EXE中删除32BITPREF标志。我刚在TeamCity中设置了一个构建步骤来涵盖这个:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\"CorFlags.exe Service.exe /nologo /32BITPREF-
我认为更好的方法是手动完成每个项目并禁用该标志。正如有人提到的,一个简单的grep和sed最有可能成功。
清除"首选32位" flag是一个更好的选择。这可确保编译64位版本,并且不需要TeamCity构建配置中的自定义脚本。