web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'MySql.Data, Version = 6.2.2.0

Je travaille sur une application de bureau avec c # et la base de données MySQL. Lorsque j’installe son programme d’installation sur ma machine, cela fonctionne bien, mais lorsque je l’installe sur une autre machine, il donne l’exception suivante lorsqu’il tente d’accéder à la base de données. J'utilise MySQL.Data.dll pour communiquer avec MySQL.

Impossible de charger le fichier ou l'assembly 'MySql.Data, Version = 6.2.2.0, Culture = neutre, PublicKeyToken = c5687fc88969c44d' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

et le fichier MySql.Data.dll présent dans le dossier du projet dans le dossier Program files

En fait, lorsque je l’exécute à partir de son dossier dans le fichier programme, l’exécution s’effectue sans erreur, mais lorsque j’essaie de l’exécuter à partir de son raccourci dans le menu Démarrer, cette erreur est signalée.

14
Azhar
  1. Le raccourci dans le menu Démarrer définit-il correctement le répertoire de travail? (Je soupçonne que c'est la réponse la plus probable)

  2. Y a-t-il une version différente/incorrecte de MySql.Data.dll installée dans le GAC (Global Assembly Cache)? J'ai vu cela donner des messages d'erreur similaires auparavant.

8
Rob

Il semble que j'ai 2 ans de retard pour répondre à ce message, mais cela pourrait être utile pour ceux qui sont toujours confrontés à ce problème. Voici donc ma conclusion datée du 1er avril 2012 à 17h00, heure de l'Est:

J'ai eu le même problème avec l'une de mes applications Web. Et j'ai trouvé le dit problème se pose quand vous faites:

  • Copiez et collez le MySql.Data.dll quelque part dans un dossier.
  • Vous avez une copie de toute version de MySql.Data.dll dans GAC

Bien que l’application fonctionne correctement sur votre machine de développement car elle peut voir les fichiers, mais lorsque vous la déployez sur une autre machine, l’erreur d’exécution s’affiche. 

Dans mon cas, le VS2008 m'a toujours signalé la même erreur que vous avez mentionnée. J'ai ensuite fait ceci:

  • Suppression de la référence de copie locale de la dll
  • Référencé le DLL trouvé dans GAC
  • Et définissez la propriété "Copie locale" sur "Vrai" de la DLL en cliquant avec le bouton droit de la souris sur -> propriétés.

Modifier:

Quelqu'un a demandé "Où est GAC?":
http://msdn.Microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx

19
KMX

MySQL.data.dll est-il présent dans le même répertoire que le fichier .exe?

Si tel est le cas, MySQL.data.dll a-t-il la version/clé publique appropriée recherchée par le fichier .exe?

3
nos

Quand cette chose m'arrive, c'est généralement une des deux choses suivantes:

Assurez-vous que MySql.Data est présent sur la machine sur laquelle l'erreur se produit. (C'est incroyable combien de fois un fichier est manquant :-))

Si MySql.Data est une DLL 32 bits en mode mixte (code géré et natif). Et votre exécutable spécifie "N'importe quel processeur". Sur une machine 64 bits avec .NET 64 bits, cela échouera avec le message d'erreur que vous avez reçu. Une solution consiste à spécifier "x86" comme cible pour l'exécutable. 

2
Arve

La raison de Tommy est très valable:

Mon projet faisait référence à une ancienne version de MySql.Data.dll par rapport à ce qui était réellement installé sur ma machine de développement. Cela entraînera la même erreur.

Vérifiez votre fichier .config:

Et comparez cette version au numéro de version du fichier lorsque vous souhaitez y ajouter une nouvelle référence.

Solution:

1) supprimez la ligne de votre fichier de configuration et rajoutez la référence

2) ou désinstallez le connecteur MySql .net et installez la version à laquelle votre projet fait référence.

1
Brabbeldas

Assurez-vous que la MySql.Data DLL que vous avez placée dans le dossier du projet est la version correcte (6.2.2.0 dans ce cas).

0
Tommy Carlier

J'avais aussi ce problème, il s'agissait pour moi de recréer les chaînes de connexion dans les paramètres du projet. Ils ont été configurés pour une version précédente du connecteur MySQL.

0
Charles Iams