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

时间:2016-08-03 19:29:49

标签: c# .net windows windows-services

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

2 个答案:

答案 0 :(得分:1)

请确保您在Windows服务中使用的所有引用也在“任何”目标下编译,否则在尝试在64位服务中加载32位程序集时将遇到问题。

答案 1 :(得分:1)

答案是 - 取决于。你说:

  

我有几个针对32位但一直在64位操作系统上运行的Windows服务

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

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

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

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

  • 在64位系统上,它会将AnyCPU加载到x64上下文中,最好不要为x86构建任何依赖项。此外,您可以构建x64,优化代码。

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