2013-12-12 41 views
0

我的小应用程序做两件事情似乎发生冲突:.NET项目需要在x64和x86下构建吗?

1)使用VFPOLEDB.1谈Visual FoxPro数据库来获取一些数据 - >它需要应用生成器在x86或“任何CPU”

2 )然而,还有一个函数可以调用powershell脚本来访问服务器的IIS,并且它需要在x64中构建项目。 (或者.Net启动powershell时,它会对哪个版本感到困惑,并会抛出一些COM对象类而不会发生寄存器错误)

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

+0

如果您需要在需要调用Powershell的同一系统上调用visual foxpro,那么“任何cpu”都不会有帮助 - 64位系统上的任何cpu都将作为64位可执行文件运行,所以如果你的依赖是32位的,它仍然无法加载。 –

+0

正确,所以实际上一个必须是x86和另一个是x64,这是冲突:( – Samuel

+0

什么是您的部署方案?这是一个一次性工具吗?我真的认为使用COM +服务器可能会满足您的需求,如果你不'不要在大量机器上实际管理它 –

回答

3

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

+3

请注意,虽然这可能工作,如果所有三个都是.exes,如果两个被调用的项目被构建为库,它将不起作用 - 它们仍然会加载为错误的位 –

+0

是的,我同意如果只是项目在不同的版本并使用dll作为参考,它仍然会失败,因为它只计算主要的exe版本。 – Samuel

2

每微软:

的VFP OLEDB驱动程序是32位的,并且不能与在64位模式的.NET 2.0 CLR运行使用。我的理解是,没有计划提供64位版本的VFP oledb驱动程序。 [Source]

总之,你不会在64位模式下使用它;努力解决你的COM对象错误并为x86构建。您的其他选项可能是为FoxPro部分生成一个独立的可执行文件,并让您的主应用程序独立执行它(但最终会生成virtualized)。

0

我觉得这样做的另一个选择是使用COM +和后期执行模型,其中COM对象实际上是由COM +服务器而不是直接由应用程序管理的。

相关问题