Signaler

Problème exécutable vb.net 2010 [Résolu]

Posez votre question aurelie76 88Messages postés samedi 19 avril 2008Date d'inscription 13 mai 2017 Dernière intervention - Dernière réponse le 13 mai 2017 à 07:50 par aurelie76
Bonjour à tous,

voilà, j'ai un soucis pour déployer un exécutable sur des pc.

J'ai développé sur XP prof framework 4.0 un projet avec VB.net 2010 et base de donnée SQL phpmyadmin et les pc en déploiement sont framework 4.0 également. Lorsque je construis l'exe et que je lance j'ai un message d'alerte dont le contenu est le suivant : (enfin une partie ...)

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.


*
                            • Exception Text **************

System.IO.FileNotFoundException: Could not load file or assembly 'MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies. Le fichier spécifié est introuvable.
File name: 'MySql.Data, Version=6.9.9.0, Culture=neutral,
PublicKeyToken=c5687fc88969c44d'
at WindowsApplication1.Form1.btnlogin_Click_1(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
.......


*
                            • JIT Debugging **************

To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box


j'ai mis en gras ce qui m'interroge, j'ai bien dans mes déclarations :
Imports MySql.Data.MySqlClient.MySqlConnection
Imports MySql.Data
Imports MySql.Data.Entity

Question : je mets juste l'exe récupéré de ...\bin\release \projet sur les postes , faut-il y associé les autres fichiers également dans ce répertoire (.dll, .xml, .pdb etc ...) si oui, de quelle manière les intégrer ?

je n'ai rien trouvé sur le forum, y aurait-il qq'un pour m'aider s'il vous plait ?

Merci pour votre aide, aurélie
Utile
+0
plus moins
Bonjour,

Premier élément à vérifier :

MySQL est-il déployé sur les autres machines vers lesquels tu veux exporter ton application.

Si oui :

Dans les propriétés des références sur MySQL, tu dois placer [ Copie Locale ] à False.

Si au contraire MySQL n'est pas déployé, tu dois placer cette propriété à True et copié toutes les DLLs qui se trouvent dans le répertoire \bin\release.

Il y a aussi la propriété [ Version Spécifique ] qui devrait normalement être à False.

Pour tous les Imports de ton projet, il doit y avoir une DLL associé, qui doit être, soit déployé sur le poste qui reçoit ton application, soit copié avec l'exécutable dépendamment de la valeur de la propriété [ Copie Locale ].

Ceci exclue bien sur, les références au Framework qui sont normalement dans le GAC de chaque machine où le Framework est installé.

K
Donnez votre avis
Utile
+0
plus moins
Bonjour,

J'ai développé sur XP prof framework 4.0 un projet avec VB.net 2010

si tu te retrouves sur des machines qui sont sous Windows 10 voir ce commentaire:


http://codes-sources.commentcamarche.net/forum/affich-7053470-creer-connecter-et-remplir-une-base-access#2
Donnez votre avis
Utile
+0
plus moins
Merci à vous,

j'ai un peu avancé (enfin je crois) mais maintenant, j'ai ce message



je fouille mais c'est une partie que je ne connais pas le GAC,

merci pour votre aide,

aurelie
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Le "GAC" est l'équivalent du "path" sous DOS.

Dit simplement, c'est une mémoire cache de Windows qui conserve l'emplacement et/ou les DLLs elles-mêmes qui sont chargées.

C'est pourquoi, la fameuse propriété de [ Copie Locale ] doit être à True,
pour que ton application puisse la trouver si celle-ci n'est pas installé
sur le poste.

Dans le message que tu as déposé, il est clair que ton programme ne trouve pas cette DLL (assembly).

Tu peux ainsi télécharger cette DLL ici : https://www.dllme.com/dll/files/mysql_data_entity_dll.html

Ensuite tu copie cette DLL dans ton répertoire \bin\Release.
Dans ton projet, tu détruit la référence à MySQL.Data.Entity.
Tu crée une nouvelle référence et cette fois-ci elle doit pointer
sur la DLL que tu viens de copier dans le répertoire \bin\Release.

Tu t'assure que la propriété [ Copie Locale ] de la référence est bien à TRUE.
Et tu copie le contenu du répertoire \bin\Release vers la nouvelle machine.

Cet exercice devra être fait pour toutes les DLLs de MySQL que ton
projet à besoin. En fait, toutes les DLLs qui ne sont pas dans le Framework cible que tu utilise i.e. VS2010=Framework 4.0.

K
Donnez votre avis
Utile
+0
plus moins
Merci bcp pour ta réactivité Kalissi, c'est technique, je vais y aller pas à pas. D'abord je vais relire ton message.
J'avais déjà décrypté ton 1er message et réussie à trouver les propriétés des références de MySql à passer en false ou true suivant tes recommandations.

en fait, je fais appel à un "serveur" ou est installé ma bdd phpmyadmin, donc les stations ne supportent pas directement phpmyadmin, si j'ai bien saisi tes explications, je dois considérer le cas N°2 cad :

"Si au contraire MySQL n'est pas déployé, tu dois placer cette propriété à True et copié toutes les DLLs qui se trouvent dans le répertoire \bin\release
Il y a aussi la propriété [ Version Spécifique ] qui devrait normalement être à False."



à ce niveau là j'ai déjà 3 questions :

1) - j'ai aussi importé les références :

Mysql.data.entity.EF6
Mysql.data.entity



faut-il que je passe les propriétés à TRUE ?

2) - version spécifique est à TRUE par défaut, faut-il que je le passe à False comme tu le préconises ?

3) - et "copier toutes les DLLs qui se trouvent dans le répertoire \bin\release", je colle les DLL ou stp ?


"Pour tous les Imports de ton projet, il doit y avoir une DLL associé, qui doit être, soit déployé sur le poste qui reçoit ton application, soit copié avec l'exécutable dépendamment de la valeur de la propriété [ Copie Locale ]."

je ne comprends pas tes explications, trop technique pour moi, je suis désolée.

Comme tu vois, j'en suis qu'à déchiffrer ton 1er message, ensuite, je passerai au 2ème (dès ce soir d'ailleurs car je suis toute seule sur coup là et je galère bien)

merci pour ton aide,

aurelie
Donnez votre avis
Utile
+0
plus moins
Bonjour Kalissi , cs_Le Pivert

Après avoir cogitée une bonne partie de la nuit et ce matin de bonne heure pour décrypter et appliquer tes consignes Kalissi, j'ai le plaisir de vous annoncer que ca fonctionne sur des stations déportées.

J'ai effectivement mis à TRUE toutes les composantes MySql du projet, grand merci pour cette aide.

Sans doute était-ce le dernier rempart à franchir qui signe en même temps la fin de mon projet. (je dis sans doute, car peut-être que je vais tomber à nouveau sur un pb et que j'aurai besoin de vous, car j'ai dû surmonter pas mal d'embûches mais j'ai aussi bcp appris et progressée grâce à vous et aux membres de ce forum, pour peu qu'on se donne le temps et le courage de le parcourir)

A bientot, aurelie
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Je suis bien content que tu en sois venu à bout, je comprends que cela n'a pas du être évident pour toi, moi je code à tous les jours dans des applications client/serveur et il n'est pas toujours évident de partager cette connaissance, déjà que je m'y perds moi aussi dans toutes la gamme des architecture organique que je côtois et en multi-couches de surcroit.

Je ne suis pas sur le même fuseau horaire que toi alors, je n'ai pu te répondre avant. J'aimerais pouvoir te dire que c'est le dernier rempart mais il y en aura surement d'autres. Je dois continuellement faire face à de nouveau problème compte tenu de l'évolution des environnements. Il y a quelques mois nous avons migré à VS2015 et celui-ci est plus sensible au référence imbriqué. Une référence qui possède une référence.

Bon pour tes questions :

1.) Copie Locale à True

2.) Version spécifique à TRUE

Puisque tu transporte avec ton projet la dll en question (c'est à dire que lorsque tu ajoute la dll dans le répertoire \bin\release et que tu ajoute la référence à partir de ce répertoire, cela veut obligatoirement que tu utilise une version spécifique et que tu utilise une copie locale.

3.) Les dlls doivent être copié au même endroit que l'exécutable de ton projet que tu copie dans une autre machine. (i.e. dans le même répertoire).

Bon, puisque ça fonctionne, c'est probablement ce que tu as fait. Mais disons simplement que je confirme le tout.

Bonne continuité.

K
Donnez votre avis
Utile
+0
plus moins
bonjour Kalissi,

ton cv me fait rêver, j'avais bien compris que je n'avais pas à faire à un amateur ... merci pour ces précieux conseils encore et peut-être à bientôt sur le forum.

je clos le sujet pour la bonne marche du site, contente d'avoir fait ta connaissance.

aurelie
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !