所有程序集都应该针对相同的体系结构吗?

Should all assemblies target the same architecture?

一些第三方库,如 CefSharp,需要将体系结构设置为 x86x64,而不是 Any CPU。这适用于解决方案中的所有项目,还是仅适用于 "start up" 个项目?

通常,x86 用于启动项目,Any CPU 用于所有其他(但显然不是 x64)有效配置,因此在 32 位模式下都是 运行 ?

只要您不混用 x64 和 x86 库就可以了。如果你的库之一是 x86 而其余的是 AnyCPU 你没问题。

这是一个部署细节。您应该创建两个安装程序,一个用于 32 位操作系统,一个用于 64 位操作系统。用户选择适合他机器的那个。

64 位安装程序应部署 64 位版本的 CefSharp 可执行文件。所有程序集都被简单地编译为 AnyCPU。

32 位安装程序应部署 32 位版本的 CefSharp。所有程序集都仍然 编译到 AnyCPU。但是您可以解决极端情况,即使用 64 位 OS 的用户出于某种原因更喜欢使用您程序的 32 位版本。只需在您的 EXE 项目上设置 "Prefer 32-bit" 选项即可。或者选择 x86 作为旧 VS 版本的平台目标。其他程序集留在AnyCPU。

如果您不想同时支持两者,那么最后一个适用于任何用户。

CefSharp 要求您选择 x86 或 x64 的原因是因为它依赖本机 C++ DLL 来提供 CEF/Chromium 浏览器。本机 DLL 中没有这样的 AnyCPU 概念。所以 Visual Studio 需要知道在构建和调试时是否将 32 位或 64 位 CEF DLL 复制到您的 bin 目录中。

回答您的具体问题:

只要在启动项目上设置平台就可以了。其他一切都可以留在 AnyCPU 上。

一般这样配置就可以了。这意味着您的程序只能在 32 位模式下运行。部署时,您只需包含 bin\x86\Release 目录中的 32 位版本的 CefSharp 和 CEF 二进制文件(libcef.dll 等)。