我已经构建了一个 "Any CPU" 的 Windows 服务。然而,在我的 64 位机器上运行时,它以 32 位模式运行。如何解决这个问题?我正在使用 .NET 和 C#,我的操作系统是 Windows 2008 R2。
如果我在 x64 上构建它,则可以正确地在 64 位模式下加载。但是,“Any Cpu” - 这就是我想要的 - 在 32 位上加载,即使它所运行的机器完全支持 64 位。
编辑以根据反馈添加更多信息
我们还有第三方工具,并引用了一个 C++ 托管程序集。这些可能或可能不是为任何 CPU 构建的。事实上,我知道 C++ 托管程序集只适用于 x86。但是,奇怪的是,如果我明确指定 x64,该进程将在 x64 中启动并工作。如果框架尝试加载 C++ 托管程序集,则会失败。我不介意这一点,因为在代码中,如果我们在 64 位模式下运行,我们不会加载 32 位托管 ++ 程序集。是否可能是因为构建发现这里有一个 32 位组件,所以应将启动流程(在这种情况下是 Windows 服务程序集)标记为 x86 呢?