将.Net Framework包装到核心:System.Data.OracleClient

将.Net Framework包装到核心:System.Data.OracleClient,.net,.net-core,.net-standard,system.data.oracleclient,.net,.net Core,.net Standard,System.data.oracleclient,背景 我目前面临的问题是,我的ASP.NETCore5.0应用程序突然需要使用一个特殊的库(来自外部提供者)与数据库通信。不幸的是,此库的目标是Framework 4.7.2。 在不久的将来,将库升级到.Net核心/标准是不现实的。 因此,我的想法是编写一个具有以下结构的包装器: 应用程序类型:工作者服务↔ 标准库↔ 框架库 目标框架:.Net Core 5.0↔ .Net标准2.0↔ 框架4.7.2 出于测试目的,我使用了辅助服务而不是ASP.NETWeb应用程序。框架库引用上

背景
我目前面临的问题是,我的ASP.NETCore5.0应用程序突然需要使用一个特殊的库(来自外部提供者)与数据库通信。不幸的是,此库的目标是Framework 4.7.2。
在不久的将来,将库升级到.Net核心/标准是不现实的。
因此,我的想法是编写一个具有以下结构的包装器:
应用程序类型:工作者服务↔ 标准库↔ 框架库
目标框架:.Net Core 5.0↔ .Net标准2.0↔ 框架4.7.2
出于测试目的,我使用了辅助服务而不是ASP.NETWeb应用程序。框架库引用上述库,该库不适用于.Net Core。

问题
起初,我有一个错误:

无法加载文件或程序集 “System.Configuration.ConfigurationManager”

但我通过在标准库中加载NuGet包解决了这个问题。 现在,我在另一个程序集上遇到了相同的问题:

无法加载文件或程序集System.Data.OracleClient, 版本=2.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089'

不幸的是,OracleClient包已被弃用,标准库没有可用的NuGet包。因此,以前的解决方案不再有效

尝试的解决方案
我尝试使用Oracle.ManagedDataAccess,但没有效果。 我认为选择的版本应该兼容,但我也尝试过(在不同的组合中):

  • 而不是.NET5→ .净额3.1
  • 而不是.Net标准2.0→ .NetStandard2.1
  • 而不是.Net Framework 4.7.2→ .Net框架4.6.1
问题

  • 我对targe框架的兼容版本的看法是否错误
  • 我不明白到底在哪里需要加载NuGet包。我认为在框架库中引用它们就足够了。但是对于ConfigurationManager,我必须引用标准库中的包
  • 有没有办法在.Net 5应用程序或.Net标准库中使用引用System.Data.OracleClient的框架库?

  • 我几乎要放弃了,但随后我不得不将我的Web应用降级为Framework,这将需要大量无用的工作。

    大约2,根据我的经验,这取决于库是否公开NuGet中的类型。如果库有依赖项,但没有在其公共API中公开该依赖项的类型表单,则使用库的代码不需要该依赖项。但是,如果它们被公开,那么使用库的代码将不知道如何处理这些类型,并且还需要添加依赖项。这是我所希望的,但在标准库中,我只调用框架库中的方法,而不调用参数。没有曝光。它编译但产生上述错误。