将32位VB.Net连接到64位Access .ACCDB

时间:2019-11-18 15:45:57

标签: .net vb.net ms-access

我有一个VB.net应用程序,正在尝试升级以使用企业授权 64位Access .accdb数据源。我尝试安装32位AccessDatabaseEngine.exe,但由于计算机上已安装完整的64位Office,因此无法安装。 .Net应用程序将不会连接到64位ODBC DSN或ACE.OLEDB提供程序(例如未注册)。 由于其中包含一些自定义的32位.DLL,我未能将此应用程序编译为x64应用程序。

有没有办法让32位.Net应用程序使用64位Access数据源?

1 个答案:

答案 0 :(得分:2)

如果要使用ACE x64数据引擎,则必须将.net项目强制为x64位。在.net中,如果选择“任何CPU”,则在大多数情况下,您将获得x32位的进程内。而且由于Visual Studio是x32位,因此任何CPU或x86的设置将始终导致x32位运行进程。

现在,如果您选择任何CPU且其他一些Windows进程在x64尝试运行时尝试使用该组件,那么.net将消耗该.net项目或.dll作为x64进程内进程。

但是,自从首先启动.net程序以来,然后必须强制它以x64位运行,并且应该可以正常工作。

自从个人计算机时代来临以来,您再也无法混合使用其他位大小的程序来与另一个以其他位大小的程序运行的程序进行通讯。进程内使用.dll的情况尤其如此。如果要在.net上使用ACE x64,则只需确保并强制项目始终以x64位运行。因此,将项目设置设置为x64,不要使用x32或任何CPU。在大多数情况下,任何CPU都将以x32位进程启动。另外,在Visual Studio中,您可以使用各种连接字符串生成器来建立与ACE的连接,但是如果您单击“测试连接”,则由于VS是x32位应用程序,因此将无法使用。因此,要真正测试是否可以连接,就必须运行程序,因为VS构建器中的“测试连接”在开发过程中以x32位运行。