gpt4 book ai didi

c# - 为什么我的 .NET 进程在使用 64 位 installutil 时以 32 位运行?

转载 作者:行者123 更新时间:2023-12-03 11:13:10 26 4
gpt4 key购买 nike

我们有一个作为 Windows 服务安装的 C# 控制台应用程序。目标 64 位计算机运行的是 Windows Server 2012。我们使用了 64 位 installutil 实用程序:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>installutil -i C:\Services\MainService\Service.exe

但是,当我在任务管理器中看到正在运行的进程时,它显示它作为 32 位进程运行:

Snapshot_of_task_manager_32bit_process

任何想法为什么会这样,以及如何让进程以 64 位运行?

我在这里看到了这个问题,但还没有人回答:

Why is my 64 bit service running as 32 bit?

最佳答案

我最终做的是使用 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 构建配置中的自定义脚本。

关于c# - 为什么我的 .NET 进程在使用 64 位 installutil 时以 32 位运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com