VS2010 – Comment arrêter automatiquement la compilation lors de la première erreur de compilation

{rant} Je voudrais d’abord dire que ce n’est pas un duplicata . J’ai déjà posé cette question mais elle a été fermée en double lorsque ce n’est pas le cas. Cette question est spécifique à VS 2010 et les réponses à ce que l’on appelle le travail en double dans VS 2008 mais pas dans VS 2010 (du moins pas pour moi ou pour qui que ce soit que je connaisse). Donc, avant que vous ne fermiez quelque chose comme une copie, que diriez-vous de lire attentivement la question et d’ essayer la réponse pour vous-même et voir si cela fonctionne réellement. Toutes mes excuses pour le coup de gueule, mais il n’ya pas de moyen évident de contacter la police des SO qui a fermé le dossier ou l’a rouverte. {/ rant}


Au travail, nous avons une solution C # avec plus de 80 projets. Dans VS 2008, nous utilisons une macro pour arrêter la compilation dès qu’un projet de la solution ne parvient pas à se construire (consultez cette question pour plusieurs options pour VS 2005 & VS 2008: Arrêter automatiquement la génération Visual C ++ 2008 lors de la compilation ) ?

Est-il possible de faire la même chose dans VS 2010? Ce que nous avons trouvé, c’est que dans VS 2010, les macros ne fonctionnent pas (du moins je ne pouvais pas les faire fonctionner) car il semble que les événements d’environnement ne se déclenchent pas dans VS 2010.

Le comportement par défaut consiste à continuer autant que possible et à afficher une liste des erreurs dans la fenêtre d’erreur. Je suis heureux qu’il s’arrête dès qu’une erreur est rencontrée (au niveau du fichier) ou dès qu’un projet ne parvient pas à se construire (au niveau du projet).

Réponses pour VS 2010 seulement s’il vous plaît. Si les macros fonctionnent, une explication détaillée de la façon de les configurer pour VS 2010 serait appréciée.

Merci.

(Vous pouvez maintenant télécharger ceci comme une extension , si vous ne voulez pas le construire vous-même)

Cette réponse ne fonctionne que dans VS2010 (semble juste:)). J’ai mis la source sur ma page github . Avant de pouvoir le construire, vous devez installer le SDK . Une fois cela fait, il vous suffit de récupérer le source complet de github (y compris les fichiers de projet) et de le construire. Vous pouvez installer la sortie dans vos instances VS normales en trouvant le VSIX dans votre sortie de génération et en l’ouvrant.

La partie importante est la suivante:

public void TextViewCreated(IWpfTextView textView) { var dte = GlobalServiceProvider.GetService(typeof(DTE)) as DTE; textView.TextBuffer.Changed += (sender, args) => { //Output window is friendly and writes full lines at a time, so we only need to look at the changed text. foreach (var change in args.Changes) { ssortingng text = args.After.GetText(change.NewSpan); if (BuildError.IsMatch(text)) dte.ExecuteCommand("Build.Cancel"); }; } } 

… où BuildError est une regex définie ci-dessus que vous pouvez modifier. Si vous avez des questions sur la modification du code, faites le moi savoir.

Edit: Voyez maintenant que Will m’a battu sur celui-ci – Pour VS2010, il y a un complément disponible qui peut faire cela, et beaucoup plus. VSCommands 2010, via http://vscommands.com/features/