【问题标题】:C# .NET x86/x64 which project determines platform?C# .NET x86/x64 哪个项目决定平台?
【发布时间】:2012-12-21 15:11:19
【问题描述】:

我的visual studio项目有以下情况:

  • 组装C
  • 项目 A -> 类库 Any CPU(参考程序集 C)
  • 项目 B -> windows 应用程序 x86(参考项目 A)

在此配置中,什么决定了 C 将使用什么平台程序集?

  1. 作为启动项目的项目 B --> 程序集 C 将运行 x86
  2. 项目 A 是直接引用程序集 C 的项目 --> 程序集 C 将根据平台运行 x86 或 x64

1 还是 2? 谢谢

【问题讨论】:

    标签: c# .net x86-64 platform


    【解决方案1】:

    启动程序集决定使用哪个平台。如果启动程序集构建为“任何 CPU”,它将在操作系统运行的平台上运行。

    (换句话说,1)

    【讨论】:

    • +1。确切地。可执行文件确定,其余部分必须遵循(或抛出异常)。
    【解决方案2】:

    这取决于针对目标编译的程序集 C。其他项目不会以任何方式影响它的形状或形式。这种具有混合目标的设置可能会导致很多问题。

    由于 B 是应用程序,它将作为 x86 运行。如果您使用的是 x64,项目 A 将无法加载,因为 A 将尝试以 x64 运行,而 x86 应用程序无法加载 x64 dll

    如果你在 x86 机器上运行它,那么项目 A 也将运行 x86 并且会正确加载。

    【讨论】:

    • 很好,没有错,但完全忽略了它如何加载的问题。不是帽子问题由此产生。程序集(即非 exes)对此没有发言权。
    • 项目 A 可以正常加载,因为它是 AnyCPU。在 32 位进程中,AnyCPU 类库将被 JITted 到 x86 代码。
    • 但本例中的可执行文件是Project B,所以我认为我的答案是正确的
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 2015-05-03
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多