2017-05-04 3 views
0

Mon objectif général est de lire tous les avertissements à la fin de la construction d'une solution, puis de les enregistrer comme des erreurs. Ceci est distinct du paramètre TreatWarningsAsErrors, car cela devrait également créer des binaires pour les projets ayant ces avertissements.Dans une tâche MSBuild, comment puis-je accéder à tous les avertissements générés par la génération?

Je m'attends à résoudre ce problème avec une tâche MSBuild personnalisée, mais je ne sais pas ce dont j'ai besoin pour la transmettre à partir du fichier .targets.

EDIT: Je ne pense pas que ce soit un doublon de this question, car cette adresse analyse le journal pour une certaine chaîne et émet une erreur pour ce code spécifique. Je veux obtenir une liste de tous les avertissements dans la construction, quel que soit leur contenu.

+0

Possible duplicate of [Comment traiter l'avertissement MSB3245 (impossible à résoudre) comme une erreur?] (Http://stackoverflow.com/questions/17495278/how-can-i-treat-msb3245-could-not -resolve-reference-warning-as-an-error); La question est un peu différente, mais à la fin c'est la même chose: comment agir sur les avertissements émis par le logger pendant la construction. – stijn

+0

stjin - cela peut être utile, mais je ne veux pas juste attraper certains avertissements. Je veux attraper tous les avertissements. Puisque ceux-ci peuvent prendre différentes formes, l'analyse directe du journal peut ne pas suffire. Je vais essayer cependant. – Dahud

+0

Autant que je sache, tous les avertissements émis par les outils MS doivent correspondre à un avertissement insensible à la casse [^:] +: 'regex, ce qui est assez facile à appliquer à la réponse liée. Et d'autres outils suivront mieux la même convention s'ils veulent que leurs messages se comportent en accord avec la résolution. – stijn

Répondre

0

Vous ne pouvez pas obtenir des avertissements de génération à l'intérieur d'une tâche car elle n'a tout simplement pas accès à ces informations. Les alertes sont déclenchées et envoyées à l'infrastructure de journalisation MS Build et gérées à cet endroit, ce qui est totalement indépendant de l'exécution de la tâche.

Vous pouvez cependant écrire un enregistreur personnalisé pour suivre les avertissements émis par la construction. Avec votre enregistreur personnalisé, chaque fois qu'un événement d'avertissement est déclenché, il suffit de l'enregistrer et lorsque la construction est terminée, vous pouvez faire ce que vous voulez avec cette information. Voir la documentation here et here pour savoir comment écrire un enregistreur personnalisé.