我们有一个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位运行? 我在这里看到了这个问题的帖子,但还没有人回答: 为什么我的64位服务会以32位运行?
我最终所做的是使用 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位”标志是更好的选择。这确保编译64位版本,并且不需要在TeamCity构建配置中使用自定义脚本。