2010-06-15 5 views
41

{rant} D'abord, je voudrais dire que ce n'est PAS UN DUPLICATA. J'ai déjà posé cette question mais elle a été fermée en tant que doublon alors qu'elle ne l'est pas. 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 quelqu'un que je connais). Donc, avant d'aller quelque chose comme un doublon, que diriez-vous? lire la question attentivement et essayez la réponse pour vous-même et voir si cela fonctionne réellement. Toutes mes excuses pour la diatribe, mais il n'y a pas de moyen évident de contacter la police de l'OG qui a fermé la question ou la rouvrir. {/ rant}VS2010 - Comment arrêter automatiquement la compilation lors de la première erreur de compilation


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 dans la solution ne parvient pas à construire (voir cette question pour plusieurs options pour VS 2005 & VS 2008: Automatically stop Visual C++ 2008 build at first compile error?).

Est-il possible de faire la même chose avec VS 2010? Ce que nous avons trouvé est que dans VS 2010 les macros ne fonctionnent pas (au 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 est continuer le plus loin possible et afficher une liste d'erreurs dans la fenêtre d'erreur. Je suis heureux qu'il arrête soit dès qu'une erreur est rencontrée (au niveau du fichier) ou dès qu'un projet ne parvient pas à 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 sur la façon de les configurer pour VS 2010 serait appréciée.

Merci.

+4

Je vous entends, c'est assez ennuyeux quand les questions se ferment complétement. Mis à part cela, désolé, je n'ai pas votre réponse. –

+9

Si vous ne voulez pas que votre question soit fermée, vous devez renvoyer à la question que les gens vont poser * en supposant que * est un doublon et en indiquant exactement pourquoi vous croyez que ce n'est pas le cas. une réponse pour Visual Studio 2008, il ne semble pas fonctionner dans Visual Studio 2010 "). Rappelez-vous que les gens fournissent de l'aide gratuitement ici et que personne n'est payé pour cela, alors vous devriez essayer d'encadrer votre question d'un ton moins accusatoire. –

+1

Peut-être commencer aussi upvoting, vu comment le fil d'origine était à +6 ... – Warty

Répondre

28

(Vous pouvez maintenant download this as an extension, si vous ne voulez pas construire vous-même)

Cette réponse ne fonctionne que dans VS2010 (semble juste:]). J'ai mis the source up on my github page. Avant de pouvoir le construire, vous devez install the SDK. Une fois que vous avez fait cela, prenez simplement la source complète de github (inclut les fichiers de projet) et construisez-la. Vous pouvez installer la sortie dans vos instances VS normales en trouvant le VSIX dans votre sortie de construction et en l'ouvrant.

La partie importante est:

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) 
     { 
      string text = args.After.GetText(change.NewSpan); 
      if (BuildError.IsMatch(text)) 
       dte.ExecuteCommand("Build.Cancel"); 
     }; 
    } 
} 

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

+0

Fonctionne parfaitement! Merci Noé. –

+1

WTF? Est-ce vraiment le meilleur VS2010 peut faire? Je suis au-delà déçu! –

+1

Désolé, que vouliez-vous faire à la place? –

6

Edit: Voir maintenant que Will me battre sur celui-ci - Pour VS2010 il y a un complément disponible qui peut le faire, et beaucoup plus. VSCommands 2010, via http://vscommands.com/features/

+0

Je reçois 404 La ressource n'a pas été trouvée, pour http://vscommands.com/features/ – Kiquenet

Questions connexes