首页 > 解决方案 > 将 .Net 框架包装到核心:System.Data.OracleClient

问题描述

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

问题
起初,我遇到了错误:

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

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

无法加载文件或程序集“System.Data.OracleClient,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”

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

尝试的解决方案
我尝试使用 Oracle.ManagedDataAccess 但无济于事。我认为选择的版本应该是兼容的,但我也试过这个(不同的组合):

问题

  1. 我错了目标框架的版本兼容吗?
  2. 我不明白在哪里需要加载 NuGet 包。我认为在框架库中引用它们就足够了。但在 ConfigurationManager 的情况下,我必须引用标准库中的包。
  3. 有没有办法使用在 .Net 5 应用程序或 .Net 标准库中引用 System.Data.OracleClient 的框架库?

我快要放弃了,但我不得不将我的 Web 应用程序降级为框架,这需要大量无用的工作。

标签: .net.net-core.net-standardsystem.data.oracleclient

解决方案


推荐阅读