在服务器上部署c#控制台应用程序而无需实际安装oracle客户端

时间:2019-04-17 16:03:51

标签: c# oracle console-application oracle12c oracleclient

我有一个C#控制台应用程序,该应用程序计划将大数据从oracle导入到sql数据库。我倾向于从安装文件夹中使用oracle客户端dll,而不是将其安装在服务器上。我阅读了许多有关在安装文件夹中复制所需dll的现有SO解答。

https://jeremybranham.wordpress.com/2011/04/25/oracle-instant-client-with-odp-net/

该应用程序在未安装oracle客户端的Windows 10计算机上正常运行。但是在Windows Server 2008 R2上,它抛出错误,提示未找到OraOps12.dll。虽然我有可用的dll。我该怎么解决该问题?

3 个答案:

答案 0 :(得分:1)

确保在项目中引用了dll,并将其设置为复制到输出目录。我无法解释为什么,但是我已经引用了dll并没有将其设置为复制,并且遇到了您所描述的类似问题。

enter image description here

答案 1 :(得分:0)

我认为手动从Oracle Client复制DLL是一个坏主意。您可以提供Oracle.DataAccess.dll的副本-其余所有内容都请您的客户安装适当的Oracle客户端,即版本和体系结构必须与Oracle.DataAccess.dll相匹配。

或者使用ODP.NET托管驱动程序(Oracle.ManagedDataAccess.dll),这是一个独立的DLL,不需要任何其他文件。

答案 2 :(得分:0)

最后,我可以解决这个问题,而无需在服务器上实际安装Oracle Client。我收到有关无法加载OraOps12.dll的错误,但最终我发现我丢失的dll是msvcr120.dll。该dll是Microsoft Visual C ++ Runtime。因此,现在,我在部署文件夹中关注了Oracle dll,并且该应用程序正在运行。无需更改配置。

  1. msvcr120.dll
  2. Oracle.DataAccess.dll
  3. OraOps12.dll
  4. oraociei12.dll
  5. oraons.dll
  6. oci.dll