从 32 位切换到 64 位 Windows 服务时有什么问题吗?

Any concerns when switching from 32 to 64 bit Windows Services?

我有几个 Windows 服务针对 32 位,但 运行 在 64 位 OS 上。我想受益于 64 位进程的优势,特别是从内存的角度来看。除了将平台目标从 32 位更改为 64 位外,还有什么我需要做或注意的吗?

只需确保您在 Windows 服务中使用的所有引用也在 'Any' 目标下编译,否则在 64 位服务中加载 32 位程序集时会遇到问题。

答案是 - 取决于。你说:

I have several Windows Services that target 32-bit but have been running on a 64-bit OS

如果您构建面向 x86 的应用程序 - 即使在 64 位计算机上,您仍然运行32 位。

如果您要为 AnyCPU 构建服务,您的 exe 将表现如下:

  • 在 32 位系统上,它将尝试加载为 x86,并且所有组件必须是 x86 或 AnyCpu

  • 在 64 位系统上,它将尝试将 x86 构建的程序集加载为 x86,并且所有组件必须仅为 x86。如果你有一些 COM 或第三方 - 你可能需要为 x86

  • 编译
  • 在 64 位系统上,它会将 AnyCPU 加载到 x64 上下文中,你最好没有为 x86 构建的依赖项。此外,您还可以针对 x64 构建优化代码。

因此,要回答您具体的原始句子 - 您需要(至少)以 AnyCPU 或 x64 为目标,以便 运行 您的应用程序在 x64 上下文中。如果它是针对 x86 构建的 - 你仍然 运行ning 在 32 位上下文中