web-dev-qa-db-ja.com

.Net Standard 2.0クラスライブラリのファイルまたはアセンブリエラーを読み込めませんでした

NugetパッケージSystem.Data.SqlClientバージョン4.4.0がインストールされた.NET Standard 2.0クラスライブラリプロジェクトと、そのクラスライブラリへの参照を持つWindowsフォーム.NET Framework 4.7プロジェクトがあります。

Nugetパッケージのインストールとソリューションの構築は成功しています。しかし、実行時にコードがSqlClientアセンブリからの何か(たとえば、SqlConnectionからのインスタンス)を持つメソッドに到達するたびに、次のエラーが発生します。

ファイルまたはアセンブリ 'System.Data.SqlClient、Version = 4.2.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

this 質問を考えると、問題はNugetパッケージの最後のメジャーバージョンにもあったと思います。

編集

Nugetパッケージをダウンロードして解凍し、\ ref\netstandard2.0フォルダーからSystem.DataSqlClient.dllをWindowsフォームプロジェクトの\ bin\Debugフォルダーに手動でコピーしました。正確な状況は、Microsoft.Win32.Registryパッケージでも発生しました。だから私はそれが私のせいだと確信していて、何か間違った方法をとっていますが、System.Drawing.Primitive Packageでテストしたところ、dllをコピーする必要なく完全に機能しました。今、私は本当に混乱しています。

15
sahar

私はあなたがすでにそれを理解しているかもしれないと思いますが、それが誰かを助けることを願っています-これにも少し時間を無駄にしました。

したがって、すべてを機能させるには、.NET標準ライブラリを参照しているWindowsフォームプロジェクトでSystem.Data.SqlClientを参照する必要があります。その時点から、すべてが魅力のように機能しているはずです

すでに述べたように、System.Data.SqlClient.dllは出力ディレクトリにありませんでした。 .NET標準ライブラリのようなサウンドは、それ自体に依存するライブラリバイナリを取得していません。 .NET Standardの参照には「ローカルのコピー」オプションのようなものはないので、この動作を確認または設定する方法もわかりません

10
Bogdan K

同じ問題がありました。

私の解決策は、.NET標準ライブラリプロジェクトで最新のSystem.Data.SqlClientのnugetからの依存関係を追加することでした。

2

私も同じ問題を抱えていました。 .NETStandardアセンブリは、私のWPFプロジェクトへの参照として追加されました。 WPFプロジェクトの.csprojを変更する必要がありました。

https://github.com/dotnet/sdk/issues/901 で説明されているソリューションは、それを修正します。

手順:

  1. コアの.csprojファイルをメモ帳で編集します。
  2. 見つけたそれぞれに以下の2行を追加します。

    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    
  3. ソリューションをクリーンアップして再構築します。

Yes... I used Notepad.

1
KSK

同様の問題があり、私の場合はbindingRedirectが役立ちました:

<bindingRedirect oldVersion="0.0.0.0-4.4.0.0" newVersion="4.4.0.0"/>
0
Peter Vozhdai