前述のように問題を修正した後 ここ 以下の例外が発生します
System.IO.FileNotFoundException: 'ファイルまたはアセンブリを読み込めませんでした' System.Data.SqlClient、Version = 4.1.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a 'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。'
私のライブラリは.NETStandard 1.4であり、WebAppは.NET Framework4.6.1です。
System.Data.SqlClientはバージョン-4.3.0NuGetパッケージです。だから私は以下をやってみましたが無駄でした:
<dependentAssembly>
<assemblyIdentity name="System.Data.SqlClient" culture="neutral" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="4.1.0.0" newVersion="4.3.0.0"/>
</dependentAssembly>
あなたはすでにそれを理解しているかもしれませんが、それが誰かの貴重な時間を節約することを願っています
すべてを機能させるには、.NET標準ライブラリを参照しているWebApp .NET Framework 4.6.1プロジェクトでSystem.Data.SqlClientを参照する必要があります。その後、すべてが正常に機能するはずです。
.NET標準ライブラリは、それ自体に依存するライブラリバイナリを取得していないようです。 .NET標準参照には「ローカルコピー」オプションのようなものがないため、この動作を確認または設定する方法もわかりません。
Nugetパッケージマネージャーを使用するだけで、netstandardパッケージへの参照としてSystem.Data.SqlClient
を追加することで、これを解決しました。それが行われると、VisualStudioは残りをWebソリューションで行いました。
Dapperのようなパッケージを追加するときに、依存関係がすべてnetstandardライブラリに追加されるわけではないようです。
私が試したこと:
私も同じエラーを抱えていました。 .net標準2.0クラスライブラリを使用するサンプルWebAPI(2.0)を作成しました。このライブラリでは、DapperとDapper.Contribを使用しており、それらの拡張メソッドを使用してdbをクエリしようとしました。しかし、同じエラーが発生していました。クラスライブラリにSystem.Data.SqlClientnugetパッケージを追加しようとしましたが、機能しませんでした。 VS2019 CommunityEditionを使用しています。これは私に2回起こりました。だから私のために働いた正確なシナリオと解決策を書く。
機能したもの:
最終的には、System.Data.SqlClient nugetパッケージをクラスライブラリから削除し、WebApiに再度追加することで解決されました。
クラスライブラリはdappernugetパッケージを解決できますが、System.Data.SqlClientはそれ自体の内部から解決できないため、これは奇妙なことです。
これは、実際に機能しなかったプロジェクトを機能したプロジェクトと比較するまで、私を陽気な追跡に送りました。
System.Data.SQLClientのNUGETインストールは、必ずしもその名前のファイル(.dllおよび.xml)をインストールするわけではありません-少なくとも、私にとってはそうではありませんでした。
古いプロジェクトからこれらの2つのファイルを取得し、新しいプロジェクトのビンに入れました。これで問題が解決しました。