c# - 单个 x86 构建的程序集导致整个程序集作为 32 位执行

标签 c# .net assemblies 32bit-64bit

我的程序(控制台应用程序)引用了几个其他程序集(许多开源库)。我使用“Any CPU”选项集(使用 VS2008)构建了程序集。当我在 Windows Server 2008 x64 计算机上从 64 位命令提示符启动程序集时,该进程始终作为 32 位进程启动!

我查看了我的引用资料,似乎我有一个引用的 32 位程序集的引用资料。这个单一引用是否会导致整个程序集以 32 位启动?

此外,我使用 ILMerge 将所有引用的程序集合并到一个程序集中。也许这有什么关系?

有人可以帮我弄清楚这里发生了什么吗?

最佳答案

如果您需要加载32位程序集,则整个过程将需要是32位的。您可以将“任何 CPU”作为主应用程序的目标,但它将运行 64 位,并在运行时尝试加载 32 位程序集时失败。

如果您有 x86 程序集作为合并的一部分,ILMerge 足够智能,可以将主入口程序集从 AnyCPU 切换到 x86,以防止出现问题。

如果您想运行 64 位 - 您需要让所有程序集都是 64 位或 AnyCPU。

关于c# - 单个 x86 构建的程序集导致整个程序集作为 32 位执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114527/

相关文章:

c# - 在哪里指定 FocusVisualStyle ="{x:Null}"?

c# - 将 Base64 字符串转换为 GIF 图像

reflection - 错误处理 "Getting all types that implement an interface with C# 3.0"

c# - .Net 程序集解决困惑

c# - 使用多个数据库与使用单个数据库的优缺点

c# - ServiceStack.Text JsonSerializer - SerializeToString 因 DateTime.Max 失败

c# - 寻找数据访问层保护建议

.net - 64 位 Win 上缺少 dll

c# - 最快的算法确定范围重叠

maven-2 - 如何在 Maven 程序集中合并资源文件?