Je développe une bibliothèque de classe. La bibliothèque doit être utilisée par un autre programme, une .exe sans code source. L'emplacement du fichier de bibliothèque est transmis comme un paramètre à cet EXE, par exemple en exécutant: Je voudrais déboguer la bibliothèque à l'aide de ce fichier .exe (en utilisant des outils de débogage tels que des points d'arrêt, etc.) Comment utiliser Visual C # pour le faire? P>
J'ai trouvé une manière possible, qui crée un programme à une ligne qui exécute prog.exe lib.dll code> p>
prog.exe lib.dll code>. Il y a sûrement une meilleure façon? P>
3 Réponses :
Si vous avez déjà un programme externe utilisant votre bibliothèque (qui est également une application .NET, je suppose), vous pouvez démarrer ce programme et joindre le débogueur au processus ( débogueur em> -> attacher au processus em> dans le menu). Ensuite, vous serez en mesure de définir des points d'arrêt dans votre code de la bibliothèque de classe et de le déboguer. Assurez-vous que l'EXE utilise un fichier DLL et PDB qui est synchronisé avec votre code (la dernière version). P>
Les versions Express ne disposent pas de la fonctionnalité de déboguer des processus externes: msdn.microsoft.com /en-us/library/c6wf8e4z.aspx
Dans les options de débogage du projet, sélectionnez "Démarrer le programme externe" et entrez le chemin de l'EXE. Lors du démarrage du débogage VS démarrera l'EXE, joignez-la comme un débogueur. P>
Lorsque votre bibliothèque est chargée, des points d'arrêt sur votre code seront activés. P>
Une mise en garde: avec un programme externe Assurez-vous qu'il loge la DLL que vous construisez, les choses peuvent être (au mieux) si elles chargent une version différente qui ne correspond pas au code source. P>
"Démarrer le programme externe" n'apparaît pas dans l'option de débogage du projet. Je n'ai que des arguments de ligne de commande et un répertoire de travail. J'ai essayé d'ajouter le chemin de programme à l'argument de la ligne de commande, cela ne permet toujours pas de déboguer.
@Louis: Cela pourrait être un problème (ne pas avoir express, alors ne pouvez pas vérifier).