在服务器上部署c#console应用程序而不实际安装oracle客户端

问题描述 投票:0回答:3

我有一个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可用。我该怎么做才能解决问题?

c# oracle console-application oracle12c oracleclient
3个回答
1
投票

确保在项目中引用了dll,并将其设置为复制到输出目录。我无法解释原因,但我已经引用了dll未设置为复制并遇到了与您描述的类似问题。

enter image description here


0
投票

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

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


0
投票

最后,我可以在不在服务器上实际安装Oracle Client的情况下解决这个问题。我收到错误,无法加载OraOps12.dll,但最终我发现我丢失的DLL是msvcr120.dll。该DLL是Microsoft Visual C ++运行时。所以现在,我在部署文件夹中跟随Oracle dll并且应用程序正在运行。不需要更改配置。

  1. msvcr120.dll
  2. Oracle.DataAccess.dll
  3. OraOps12.dll
  4. oraociei12.dll
  5. oraons.dll
  6. OCI.DLL
© www.soinside.com 2019 - 2024. All rights reserved.