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

Framework .NET Discussion :

Probleme invoke nouveau process


Sujet :

Framework .NET

  1. #1
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut Probleme invoke nouveau process
    Bonjour,

    Pour une nouvelle app d'un client j'ai besoin d'executer un second programme lui aussi écrit en C#, je fais comme suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Assembly asm = Assembly.Load(assemblyDatas);
    MethodInfo Metinf = asm.EntryPoint;
    object InjObj = asm.CreateInstance(Metinf.Name);
     
    object[] parameters = new object[1];  
    Metinf.Invoke(InjObj, parameters);
    Rien de foufou quoi, le probléme c'est que ca amrche avec un executable codé en c# framework 4.5 compilé en x86, mais pas sur un second lui aussi codé en c# framework 4.5 compilé en x86, j'arrive pas à comprendre pourquoi. J'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Could not load file or assembly '56720 bytes loaded from app1, Version=1.0.8497.16358, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format."}  System.Exception {System.BadImageFormatException}
    (l'executable que je cherche à faire exécuter marche bien si on le lance manuellement)

    D'après google ce message pointe sur un probléme d'archi de compilation, mais comme je l'ai dit (et vérifier 10 fois), elles sont les mêmes!

    Si vous avez des explications, et une idée pour faire marcher cam merci d'avance!

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 760
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Cette manière de procéder pour exécuter un autre programme est pour le moins atypique (puisque nécessite que le programme soit aussi en .Net, pour la même architecture) et qu'il sera non pas lancée indépendement, mais incorporé au programme actuellement en cours d'exécution.

    La méthode "classique" est d'utiliser la classe Process.

    Quant au message d'erreur, il indique que le programme ou une de ses dépendances n'a pas pu être chargée. Si le programme arrive a être lancé correctement via l'explorateur, c'est que toutes les dépendances sont normalement présentes. Le chargement manuel de l'assembly passe outre le processus classique de résolution de dépendance et peut donc générer ce type de problème.

    Donc, à moins d'avoir une forte raison pour lancer le programme en chargeant manuellement l'assembly, je suggère l'utilisateur de la classe Process :
    • qui lancera bien un second processus (donc meilleure isolation)
    • qui résoudra de manière classique les dépendances
    • qui permettra de charger un assembly n'ayant pas la même architecture (par ex. un x86 au lieu d'un x86-64 et inversement)
    • qui permettra de charger un programme classique (et pas seulement un programme .Net)
    • qui est plus classique, donc dont l'intention est plus facile à comprendre
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

Discussions similaires

  1. Probleme invoke process
    Par Blo0d4x3 dans le forum C#
    Réponses: 6
    Dernier message: 17/05/2017, 13h37
  2. probleme avec les process
    Par zalalus dans le forum C#
    Réponses: 3
    Dernier message: 22/01/2010, 18h32
  3. Réponses: 18
    Dernier message: 06/10/2005, 09h09

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