我正在编写一个使用Oracle Instant Client连接到数据库的Windows Forms ClickOnce应用程序,因为在我们用户的计算机上安装完整的客户端不是一种选择。不幸的是,我们的用户混合使用32位和64位计算机。虽然应用程序本身是AnyCpu,但Oracle库不是。
目前,我们正在分发两个客户端副本,唯一的区别是Oracle DLL - 32位用户的32位DLL和64位用户的64位DLL。
就像一个实验一样,我尝试在不同的目录中发布一个带有两组DLL的客户端,它确定主机操作系统在运行时的位数,然后使用LoadLibrary加载DLL。这有效,但只有一点。
在64位系统上,会弹出一个错误框,提示“程序无法启动,因为您的计算机缺少oranls11.dll”。当我单击“确定”关闭该框时,程序启动并正常运行。将oranls11.dll添加到要加载的DLL列表中会导致消息框的两个副本一个接一个地弹出。
那么,有没有更好的方法来加载Oracle Instant Client?如果没有,是否有办法抑制该消息框,至少?