【问题标题】:compling assemblies on a 64bit plaform for a 32bit在 64 位平台上为 32 位编译程序集
【发布时间】:2009-06-16 08:52:25
【问题描述】:

在 64 位平台上为 32 位平台服务器编译程序集时,我应该选择什么选项。目前我正在尝试发布到 32 位服务器。我在 Windows Vista 机器上使用 VS2005 来构建我的项目,然后在服务器上发布,但我遇到了错误。知道如何解决这个问题。

我应该在 64 位机器上使用 AnyCPU 选项还是混合平台选项。 x86的选项也被禁用了,我不知道为什么。

【问题讨论】:

  • 你在服务器上遇到什么样的错误?
  • 异常 System.NullReferenceException:对象引用未设置为对象的实例。在 C:\Soe\IS\Generic\BP\BP.vb 中的 BP.Generic(Conversation pGalConversation) 处:Generic(Conversation pGalConversation) 处的第 797 行
  • 通过使用 AnyCPU 编译选项。它在测试服务器上运行良好,但在实时服务器上失败

标签: .net windows-vista 64-bit 32-bit publish


【解决方案1】:

使用 AnyCPU。只要您的程序集没有任何直接的非托管依赖项或对标记为特定 CPU 的程序集的依赖项,那么您的程序集就可以在 64 位或 32 位上正常工作

【讨论】:

    【解决方案2】:

    假设您使用托管语言工作,那么编译到“AnyCPU”应该是跨平台的(64/32 位),因为生成的 IL 直到代码在运行时被 JIT 化后才会转化为机器指令。

    如果您使用依赖于指针大小等的某些结构,您可以获得位依赖关系的极少数例外情况,但这些通常不会出现在您的代码中,尽管运行不会有什么坏处FxCop 覆盖您的代码以确保(FxCop 中有一节处理涉及这些问题的可移植性)

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2023-03-20
      • 2010-11-11
      • 2011-11-26
      • 2018-05-02
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多