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.
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)
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.
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:
MySql.Data.dll
quelque part dans un dossier.MySql.Data.dll
dans GACBien 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:
Quelqu'un a demandé "Où est GAC?":
http://msdn.Microsoft.com/en-us/library/yf1d93sz(v=vs.110).aspx
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?
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.
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.
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).
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.