IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.Net 2.0/dll externe] Pourquoi ai-je une erreur d'exécution sur un autre PC ?


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [VB.Net 2.0/dll externe] Pourquoi ai-je une erreur d'exécution sur un autre PC ?
    Bonjour,

    Je développe sous .NET 2 avec Visual Studio Express (VB)

    Pour mon programme, j'utilise un composant .Net que je compile en DLL (Class Library)
    Dans mon deuxième projet, j'utilise ce composant dans mon formulaire (donc j'ai importé la dll en référence).
    Après compilation, je peux exécuter ce programme sur mon PC mais pas sur une autre machine, ni via le réseau (je tombe sur une erreur windows avec la boite de dialogue pour envoyer le rapport d'erreur). Pourtant, le répertoire de mon application contient bien l'exe du projet et la dll du composant. J'ai essayé avec l'outil de déploiement, ça ne passe pas non plus.

    Bref, je comprends vraiment pas ce qui coince, j'ai cherché un peu partout et je trouve pas de solution (je pense que j'ignore quelque chose...)

    Voilà, si quelqu'un peut m'aider à comprendre mon problème, je lui serais reconnaissant.

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 95
    Points
    95
    Par défaut
    Verifie bien si le FrameWork est bien installé...

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Oui le framework est bien installé.

    J'ai essayé autre chose : je mets l'appli et sa dll dans un répertoire partagé sur une machine du réseau, et je le lance depuis ma machine de développement (donc il y a forcément le framework 2 d'installé). Le programme plante également.

    J'ai modifié le programme pour afficher une MessageBox avant que j'instancie mon composant provenant de la dll. Résultat : le message s'affiche puis le programme plante. J'en conclut que ça vient bien de la dll.

    J'ai aussi regardé comment on configurait les manifest et leur signature en pensant que le problème venait de là. Est ce qu'il faut mettre la même clé pour le composant et le programme, ou chacun une clé différente.

    Bref en tout cas, j'ai déjà essayé plein de cas (bidouille au hasard) mais ça ne fonctionne toujours pas.

    Je me rends compte que c'est pas aussi simple que VB 6 où il suffisait de distribuer l'exe et les éventuelles dll (regsrv32).

    Je reste ouvert à vos idées

  4. #4
    Membre du Club Avatar de hepsilonz
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 54
    Points : 54
    Points
    54
    Par défaut
    Ajoute ta dll dans le GAC

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Je viens de rajouter avec la ligne de commande :
    gacutil.exe /i composant.dll

    => Assembly successfully added to the cache

    Mais aucun changement sur le comportement à l'exécution :
    - sur ma machine, ne fontionne que si la dll est dans le même répertoire
    - depuis un répertoire partagé : ne fonctionne pas.

    Faut-il que le framework soit installé ainsi que l'enregistrement de la dll sur le PC qui héberge l'exe de l'application ?
    Je pensais qu'il était seulement nécessaire de faire ceci sur la machine cliente appellant l'application...
    ...

    J'ai compris d'où venait le problème.

    Mon composant, lors de son chargement, lit un fichier sur le disque dur.
    Aucun problème en local, mais sur un répertoire partagé, il y a visiblement une protection.
    J'ai une exception avec System.Security.Permissions.SecurityPermission

    Pourtant mon application est en Full Trust dans security.

    Il me reste donc à comprendre comment faire pour passer cette restriction...



    ...

    Ok, je viens de résoudre mon problème :

    En fait, il fallait signer la dll et l'exe, puis changer les droits dans la partie administration de .Net (augmenter les droits à fulltrust pour la clé correspondante).

    Je ne savais pas comment .Net gérait la sécurité et ce problème m'a permis de voir un peu tout les mécanismes qui entrent en jeu.
    Bref, c'était pas évident et j'ai mis plusieurs jours à comprendre faute d'être tombé sur un site avec une explication simple.

    Merci à ceux qui sont intervenus

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème identique
    Bonjour,

    j'ai exactement le même problème mais je ne sais pas comment signer ton exe et changer les droits.
    J'ai déjà un post sur msdn qui t'explique mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Pourquoi ai-je une erreur avec GetResponse ?
    Par Arnaud_B dans le forum Services Web
    Réponses: 1
    Dernier message: 25/07/2006, 17h13
  2. Réponses: 7
    Dernier message: 29/06/2006, 08h54
  3. [VB.Net] Pourquoi ai-je une erreur à l'exécution d'une requête ?
    Par zooffy dans le forum Accès aux données
    Réponses: 3
    Dernier message: 25/06/2006, 10h35
  4. [C# 2.0] Pourquoi ai-je une erreur à l'exécution d'un Filter Databind ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 5
    Dernier message: 24/06/2006, 18h57
  5. [ADO.Net][Access] Pourquoi ai-je une erreur lors de l'Update ?
    Par nazimb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/05/2006, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo