【问题标题】:How about .Net project needs to build under both x64 and x86?.Net 项目需要在 x64 和 x86 下构建怎么样?
【发布时间】:2013-12-12 23:15:20
【问题描述】:

我的小应用做两件事似乎有冲突:

1) 使用 VFPOLEDB.1 与 Visual Foxpro 数据库对话以获取一些数据 --> 它需要 x86 中的应用程序构建器或“任何 CPU”

2) 但是还有另一个函数可以调用 powershell 脚本来访问服务器的 IIS,并且它需要在 x64 中构建项目。 (或者当 .Net 启动 powershell 时,它会混淆哪个版本,并会抛出一些 COM 对象类未注册错误)

我该如何处理这个冲突问题?

【问题讨论】:

  • 如果您需要在需要调用 Powershell 的同一系统上调用 visual foxpro,我真的不明白“任何 cpu”将如何提供帮助 - 64 位系统上的任何 cpu 都将运行作为 64 位可执行文件,因此如果您的依赖项是 32 位,它仍然无法加载。
  • 正确,所以实际上一个是x86,另一个是x64,这是冲突:(
  • 您的部署方案是什么?这是一次性工具吗?如果您不必在大量机器上实际管理它,我真的认为使用 COM+ 服务器可能会满足您的需求。

标签: c# .net powershell visual-foxpro


【解决方案1】:

我不完全确定,但也许您可以通过拆分项目来做到这一点。一个项目是 x86 并执行 FoxPro 调用,另一个是 x64 并调用 Powershell,第三个将是调用这两者的主项目。

【讨论】:

  • 请注意,如果这三个都是 .exe,这可能会起作用,但如果将两个被调用项目构建为库,则它不会起作用 - 它们仍然会作为一个依赖项的错误位加载,或者另一个。
  • 是的,我同意。如果只是不同构建版本的项目并使用dll作为参考,它仍然会失败,因为它只计算主exe版本。
【解决方案2】:

每个微软:

VFP oledb 驱动程序是 32 位的,不能与以 64 位模式运行的 NET 2.0 CLR 一起使用。据我了解,没有计划提供 64 位版本的 VFP oledb 驱动程序。 [Source]

简而言之,您将永远无法在 64 位模式下使用它;努力解决您的 COM 对象错误并为 x86 构建。您的另一个选择可能是为 FoxPro 部分生成一个独立的可执行文件,并让您的主应用程序独立执行它(不过最终会是 virtualized)。

【讨论】:

    【解决方案3】:

    我认为另一种选择是使用 COM+ 和后期绑定执行模型,其中 COM 对象实际上由 COM+ 服务器而不是您的应用程序直接管理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多