Je rencontre un problème avec une application Windows CE. Il fonctionne bien à travers l'interface du studio visuel en cliquant sur le bouton "démarrer le débogage (F5)" dans l'interface de Visual Studio. Toutefois, si j'essaie d'exécuter manuellement cet exécutable déployé à partir de l'émulateur, j'obtiens un MissingMethodException
. Cela se produit uniquement lors de la compilation d'une version du code.Comment exécuter un programme manuellement vs exécuter un programme de studio visuel diffèrent?
Répondre
La différence réside dans les dépendances déployées. Studio pousse tout ce qu'il croit nécessaire d'être là - les FC et les références. Il pousse la plupart d'entre eux directement dans le dossier de l'application, où le chargeur commence à chercher des dépendances. Pour être 100% clair sur votre question, si vous déboguez exactement la même application, cela fonctionne bien, mais si, immédiatement après avoir quitté cette application déployée, vous l'exécutez manuellement à partir du même emplacement que celui où Studio a été déployé (en vérifiant que dans les propriétés du projet), l'application ne s'exécutera pas? Je veux dire avec absolument aucune recompilation, aucune réinitialisation de l'appareil, aucune autre copie de fichier, etc?
est correct, il suffit de quitter le programme et de tenter de le redémarrer manuellement à partir de l'émulateur et de lancer l'exception de méthode manquante. – Dave
Je ne sais pas exactement pourquoi, mais il y avait énormément de travail dans le 'ctor' de l'une des classes, une fois que j'ai déménagé, ça semble fonctionner correctement maintenant, mais je ne suis toujours pas bien sûr pourquoi j'ai pu le démarrer via Visual Studio et non manuellement. – Dave
Intéressant. C'est presque certainement une condition de faible mémoire - les CF peuvent lancer un MME quand il ne parvient pas à charger la méthode en raison de ne pas avoir assez d'espace pour le JIT. J'aurais dû y penser pour ma réponse - c'est juste que je le vois si rarement. Pourquoi Studio aurait-il changé cela, je ne suis pas certain - doit avoir à faire avec l'ordre de chargement et la fragmentation. – ctacke