背景
私は現在、ASP.Net Core 5.0 アプリケーションが、データベースと通信するために (外部プロバイダーからの) 特別なライブラリを使用する必要があるという問題に直面しています。残念ながら、このライブラリは Framework 4.7.2 を対象としています。
ライブラリの .Net Core/Standard へのアップグレードは、近い将来には現実的ではありません。
したがって、私の考えは、次の構造を持つラッパーを作成することでした:
アプリケーション タイプ: ワーカー サービス ↔ 標準ライブラリ ↔ フレームワーク ライブラリ
ターゲット フレームワーク: .Net Core 5.0 ↔ .Net Standard 2.0 ↔ Framework 4.7.2
テスト目的で、ワーカーを使用しましたASP.Net Web アプリケーションの代わりにサービスを提供します。フレームワーク ライブラリは、.Net Core では使用できない前述のライブラリを参照します。
問題
最初に、次のエラーが発生しました。
ファイルまたはアセンブリ 'System.Configuration.ConfigurationManager' を読み込めませんでした</p>
標準ライブラリにNuGetパッケージをロードすることで解決しました。今、私は別のアセンブリで同じ問題に遭遇しました:
ファイルまたはアセンブリ 'System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' を読み込めませんでした
残念ながら、OracleClientパッケージは非推奨であり、標準ライブラリで使用できる NuGet パッケージはありません。したがって、以前の解決策はもはや有効ではありません。
試行されたソリューション
Oracle.ManagedDataAccess を使用しようとしましたが、役に立ちませんでした。選択したバージョンは互換性があるはずですが、これも試しました(さまざまな組み合わせで):
- .Net 5 → .Net 3.1 の代わりに
- .Net Standard 2.0 → .NetStandard 2.1 の代わりに
- .Net Framework 4.7.2 の代わりに → .Net Framework 4.6.1
質問
- 互換性のあるターゲット フレームワークのバージョンについて間違っていますか?
- NuGet パッケージをロードする必要がある正確な場所がわかりません。Framework ライブラリでそれらを参照するだけで十分だと思いました。しかし、ConfigurationManager の場合、標準ライブラリのパッケージを参照する必要がありました。
- .Net 5 アプリケーションまたは .Net Standard ライブラリで System.Data.OracleClient を参照する Framework ライブラリを使用する方法はありますか?
私はあきらめようとしていますが、Web アプリをフレームワークにダウングレードする必要があり、これには多くの無駄な作業が必要になります。