私は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フォルダーにあります
実際には、プログラムファイルのフォルダーから実行すると、エラーなしで正常に実行されますが、スタートメニューのショートカットから実行しようとすると、エラーが発生します。
スタートメニューのショートカットで作業ディレクトリが正しく設定されていますか? (これが最も可能性の高い答えだと思います)
GAC(グローバルアセンブリキャッシュ)にインストールされているMySql.Data.dllの別のバージョン/正しくないバージョンはありますか?私はこれが以前に同様のエラーメッセージを与えるのを見ました。
私はこの投稿に答えて2年遅れているようですが、それでもこの問題に直面している人には役立つかもしれません。
Webアプリケーションの1つで同じ問題が発生しました。そして、私はあなたがそうしたときに前述の問題が発生することを発見しました:
MySql.Data.dll
をフォルダのどこかにコピーして貼り付けます。MySql.Data.dll
の任意のバージョンのコピーがありますアプリケーションはファイルを見ることができるので、開発マシンでは問題なく動作しますが、他のマシンにデプロイすると、実際にはランタイムエラーが発生します。
私の場合、VS2008はいつもあなたが言及したのと同じエラーで私を指摘しました。次にこれを行いました:
「GACはどこですか?」
http://msdn.Microsoft.com/en-us/library/yf1d93sz(v = vs.110).aspx
MySQL.data.dllは.exeファイルと同じディレクトリにありますか?
もしそうなら、そのMySQL.data.dllは.exeファイルが探している適切なバージョン/公開キーを持っていますか?
これが私に起こるとき、それは通常2つのうちの1つです:
エラーが発生したマシンにMySql.Dataが存在することを確認してください。 (ファイルが見つからないことが判明する頻度は信じられないほどです:-))
MySql.Dataが混合モード(ネイティブコードとマネージコード)32ビットDLLの場合。そして、実行可能ファイルは「すべてのCPU」を指定します。 64ビット.NETの64ビットマシンでは、これは失敗し、エラーメッセージが表示されます。解決策は、実行可能ファイルのターゲットとして「x86」を指定することです。
私にもこの問題がありました。プロジェクト設定で接続文字列を再作成することでした。以前のバージョンのMySQLコネクタ用に構成されていました。
トミーの理由は非常に有効です:
私のプロジェクトは、実際に開発マシンにインストールされたものと比較して、MySql.Data.dllの古いバージョンを参照していました。これは同じエラーになります。
.configファイルを確認します。
また、新しい参照を追加するときに、そのverisonNrをファイルのversionNrと比較します。
解決:
1)設定ファイルから行を削除し、参照を再度追加します
2)または、MySql .netコネクタをアンインストールして、プロジェクトが参照しているバージョンをインストールします。
MySql.Data DLLプロジェクトのフォルダーに配置したもの)が正しいバージョン(この場合は6.2.2.0)であることを確認してください。