web-dev-qa-db-ja.com

ファイルまたはアセンブリ 'MySql.Data、Version = 6.2.2.0を読み込めませんでした

私はc#とデータベースMySQLを備えたデスクトップアプリケーションに取り組んでいます。自分のマシンにインストーラーをインストールすると正常に動作しますが、他のマシンにインストールすると、DBにアクセスしようとすると次の例外が発生します。使ってます MySQL.Data.dll MySQLと通信します。

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

およびMySql.Data.dllファイルは、Program FilesフォルダーのProjectフォルダーにあります

実際には、プログラムファイルのフォルダーから実行すると、エラーなしで正常に実行されますが、スタートメニューのショートカットから実行しようとすると、エラーが発生します。

16
Azhar
  1. スタートメニューのショートカットで作業ディレクトリが正しく設定されていますか? (これが最も可能性の高い答えだと思います)

  2. GAC(グローバルアセンブリキャッシュ)にインストールされているMySql.Data.dllの別のバージョン/正しくないバージョンはありますか?私はこれが以前に同様のエラーメッセージを与えるのを見ました。

9
Rob

私はこの投稿に答えて2年遅れているようですが、それでもこの問題に直面している人には役立つかもしれません。

Webアプリケーションの1つで同じ問題が発生しました。そして、私はあなたがそうしたときに前述の問題が発生することを発見しました:

  • MySql.Data.dllをフォルダのどこかにコピーして貼り付けます。
  • GACにMySql.Data.dllの任意のバージョンのコピーがあります

アプリケーションはファイルを見ることができるので、開発マシンでは問題なく動作しますが、他のマシンにデプロイすると、実際にはランタイムエラーが発生します。

私の場合、VS2008はいつもあなたが言及したのと同じエラーで私を指摘しました。次にこれを行いました:

  • DLLのローカルコピー参照を削除しました
  • 参照DLL GACで見つかりました
  • 右クリックして[プロパティ]を選択し、DLL)の[ローカルにコピー]プロパティを[True]に設定します。

編集:

「GACはどこですか?」
http://msdn.Microsoft.com/en-us/library/yf1d93sz(v = vs.110).aspx

20
KMX

MySQL.data.dllは.exeファイルと同じディレクトリにありますか?

もしそうなら、そのMySQL.data.dllは.exeファイルが探している適切なバージョン/公開キーを持っていますか?

3
nos

これが私に起こるとき、それは通常2つのうちの1つです:

エラーが発生したマシンにMySql.Dataが存在することを確認してください。 (ファイルが見つからないことが判明する頻度は信じられないほどです:-))

MySql.Dataが混合モード(ネイティブコードとマネージコード)32ビットDLLの場合。そして、実行可能ファイルは「すべてのCPU」を指定します。 64ビット.NETの64ビットマシンでは、これは失敗し、エラーメッセージが表示されます。解決策は、実行可能ファイルのターゲットとして「x86」を指定することです。

2
Arve

私にもこの問題がありました。プロジェクト設定で接続文字列を再作成することでした。以前のバージョンのMySQLコネクタ用に構成されていました。

1
Charles Iams

トミーの理由は非常に有効です:

私のプロジェクトは、実際に開発マシンにインストールされたものと比較して、MySql.Data.dllの古いバージョンを参照していました。これは同じエラーになります。

.configファイルを確認します。

また、新しい参照を追加するときに、そのverisonNrをファイルのversionNrと比較します。

解決:

1)設定ファイルから行を削除し、参照を再度追加します

2)または、MySql .netコネクタをアンインストールして、プロジェクトが参照しているバージョンをインストールします。

1
Brabbeldas

MySql.Data DLLプロジェクトのフォルダーに配置したもの)が正しいバージョン(この場合は6.2.2.0)であることを確認してください。

0
Tommy Carlier