Nous utilisons Msbuild assez largement dans le cadre de notre processus d'intégration continue et, tandis que c'est incroyablement puissant et que nous puissions faire pratiquement toutes nos constructions de construction, de test et de déploiement à l'intérieur (en utilisant des tâches personnalisées) - nous avons constaté que le débogage Il utilise des balises est une douleur et ne peut pas toujours nous fournir suffisamment d'informations. P>
J'ai trouvé: http : //www.wintellect.com/cs/blogs/jrobbins/archive/2007/12/03/msbuild-debuggers.aspx , mais malheureusement, le projet semble avoir disparu de Codépex. P>
Quelqu'un a-t-il une idée s'il y a quelque chose de similaire à celui-ci disponible ou s'il y a un autre moyen / technique pouvant être utilisé? P>
Merci. P>
5 Réponses :
J'utilise le commutateur de ligne Vous devez concevoir vos scripts de construction du début pour effectuer un dépannage plus facile. Faire des choses comme: p>
rendez chaque cible aussi granuleuse que possible, de sorte que vous pouvez appeler chaque cible individuellement. Cela aide à rendre le processus de débogage beaucoup plus rapide. P>
Assurez-vous que vos tâches héritent de la catégorie Utiliser Enfin, essayez de ne pas faire des choses vraiment compliquées dans le script Msbuild lui-même. Msbuild excelle à la gestion des dépendances, des listes de fichiers et des tâches d'exécution. Tout ce qui est plus compliqué ou avancé doit être déplacé vers des tâches personnalisées écrites dans votre langue de choix .NET. Cela a l'avantage supplémentaire de faire des choses beaucoup em> plus faciles à déboguer. Lorsque vous avez votre logique dans le code, vous pouvez utiliser bonne chance! p> / v: diagnostique code>. Msbuild crache une jolie sortie verbeuse. Vous pouvez également cracher la sortie Verbose à un fichier journal au lieu de la console, à l'aide du commutateur de ligne
/ fl] fl] p]>, puis utilisez le
/ sol [n] code> (Filelogparamètre) Switch Pour spécifier le niveau de verbosité, par exemple,
/flp:verbosity=diagnostic ;logfile=Latest_Diagnostic.log code> p>
microsoft.build.uties.task code>. Il expose une propriété journale qui a trop de fonctions de journalisation. Je vous trompe généralement sur le côté de la prudence, utilisez le
LogMessage (MessageImportance, String, Objet Params []) Code>. Mes messages de débogage reçoivent un message d'importance de
MessageImportance.low code> afin qu'ils n'apparaissent que lorsque le mode de verbosité est diagnostique. P>
system.diagnostics.trace.writeline code> pour la sortie de messages qui sont trop bas pour se connecter. J'utilise DebugView pour examiner ces messages. P>
system.diagnostics.debugger.launch () code> méthode, ce qui vous permettra de joindre Msbuild au débogueur dans une instance d'exécution de Visual Studio (espérons-le. celui qui a votre tâche personnalisée déjà chargée). P>
joli verbeux? C'est un euphémisme, j'ai eu des lignes de sortie de 45k de ma construction avec ce drapeau! Bonne réponse.
Vous pouvez également consulter l'excellente application commerciale (avec essai de 14 jours) Sidekick Msbuild à Attrce Corp pour déboguer votre script Msbuild. p>
Eh bien, si vous utilisez des tâches personnalisées, vous pouvez utiliser cette approche: Comment: déboguer une tâche MSBuild personnalisée à l'aide de Visual Studio P>
Il vaut la peine de regarder le débogueur non documenté A > dans VS 2010 également. P>
Vous pouvez passer à travers C'est un simple changement de registre, puis un interrupteur Voir ici pour une procédure complète: http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx P> msbuild code> scripts dans Visual Studio si vous utilisez
msbuild 4.0 code> ou supérieur. p>
/ débogage code> lors de l'exécution
msbuild code>. p>