【问题标题】:Working with the Visual Fox Pro OleDb使用 Visual Fox Pro OleDb
【发布时间】:2009-04-16 03:32:43
【问题描述】:
我正在尝试使用 C# 将 DBF 文件中的数据提取到我的程序中。我正在使用 Visual FoxPro OLE DB 提供程序。它在我的本地机器上运行良好,但我想将我的程序打包成客户端可以使用的 dll。问题是当他们从他们的机器上运行程序时,它说 Visual FoxPro OLE DB Provider 没有在他们的机器上注册。有没有什么方法可以在不让客户端在他们的机器上安装 Visual FoxPro OLE DB Provider 的情况下使用它?
【问题讨论】:
标签:
c#
visual-foxpro
foxpro
dbf
【解决方案1】:
简短的答案是否定的……长答案是:
如果不在每台目标计算机上安装 Visual FoxPro OLE DB 提供程序,我认为您无法做到这一点。即使您尝试使用 COM 互操作,您仍然需要安装和注册原始 dll - vfpoledb.dll
到目前为止,解决此问题的最简单方法是从 Microsoft 获取 FoxPro OleDb Driver install package 并将其分发给您的用户。
如果您想为库安装推出自己的 .MSI 包,您可以手动安装并注册缺少的 dll。
使用 .MSI 包中的 regsvr32.exe 手动注册 .DLL:
首先打开您的 WSI 项目并转到 MSI 脚本。
在“立即执行”选项卡中的 InstallFinalize 之后添加“从目标执行程序”自定义操作。
当“从目标执行程序”对话框出现时,输入:
Custom Action Name: <registerdll>
Working Directory: SystemFolder
EXE and Command Line: Enter the full path to regsvr32.exe
and the full path to .DLL.
(usually ..\Program Files\Common Files\System\Ole DB\vfpoledb.dll)
如果您将 /s 开关添加到命令行,例如 [SystemFolder]regsvr32.exe /s,则应该无需用户干预即可注册 dll。
【解决方案2】:
我在 64 位 Vista 机器上开发时遇到了类似的问题。我发现为了使用 Microsoft Jet OleDB 或 FoxPro OleDB 提供程序,我必须将 .Net 项目的属性设置为专门针对 32 位处理器,因为这些提供程序没有 64 位版本。
无论如何,不确定这是否是目标机器使用您的库的问题的一部分,但我想我会提供它。
布赖恩