【问题标题】:How to force a service's bitness如何强制服务的位数
【发布时间】:2011-06-21 13:45:35
【问题描述】:

我有几个 C# Windows 服务。有人坚持作为 64 位进程运行。

这不是问题,除非我将所有共享配置迁移到 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

因此服务无法读取配置,目前我不得不复制共享配置(这违背了将其移动到 machine.config 的目的)

我已将构建配置从 x64 更改为 x86,并重新安装,但服务仍以 64 位模式运行。

【问题讨论】:

    标签: c# windows-services 32bit-64bit


    【解决方案1】:

    执行 Corflags /+32Bit [Service.Exe](.Net SDK 的一部分),它将通知操作系统该程序集必须以 32 位模式加载。

    【讨论】:

    • 有趣,并且构建配置设置不会强制使用 corflags 标头?我假设每次重新编译服务程序集时都需要手动运行(或作为构建后步骤),然后再安装它?
    • 您的整体构建配置可能是 x86,但这会将您的 MSI 或 C 设置为 32 位,但将您的 .Net 程序集保留为 AnyCPU?
    • 如果您将服务可执行文件的构建配置设置为 32 位,那么这应该等同于设置 corflags +32。但是,我试图帮助排除以 64 位运行是您的实际问题。
    • 实际上它是项目的构建配置,而不是我更改为 x86 的解决方案配置。无论哪种方式,您的解决方案似乎都是一种解决方法。我会尽快将其标记为答案。
    • 在标记答案之前先检查它是否解决了问题。 Corflags 对于追溯强制您没有源代码的 AnyCPU DLL 以 32 位加载非设计为在 64 位下正常工作的应用程序非常有用。
    猜你喜欢
    • 2013-10-22
    • 2011-11-07
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多