45 votes

VS2010 - Comment arrêter automatiquement compiler à la première erreur de compilation

{rant}tout d'Abord je voudrais dire que ce n'EST PAS UN DOUBLON. J'ai posé cette question auparavant, mais il a été fermé comme un doublon quand il ne l'est pas. Cette question est SPÉCIFIQUE par rapport à 2010 et les réponses à la soi-disant travail en double dans VS 2008 mais pas dans VS 2010 (au moins pas pour moi ou à quelqu'un que je connais). Alors avant de vous rendre la fermeture de quelque chose comme un doublon que diriez-vous de lire la question attentivement et essayez de répondre pour vous-même et voir si cela fonctionne réellement. Toutes mes excuses pour le coup de gueule mais il n'est pas évident de trouver un moyen de communiquer avec les policiers qui a fermé le problème ou pour obtenir la réouverture. {/rant}


Au travail, nous avons une solution C# avec plus de 80 projets. Dans VS 2008, nous avons utiliser 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: http://stackoverflow.com/questions/134796/how-to-automatically-stop-visual-c-build-at-first-compile-error).

Est-il possible de faire la même chose dans 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 travailler), car il apparaît que l'environnement, les évènements n'ont pas de feu dans VS 2010.

Le comportement par défaut est de poursuivre aussi loin que possible et afficher une liste des erreurs dans la fenêtre d'erreur. Je suis heureux pour elle d'arrêter dès qu'une erreur est rencontrée (au niveau des fichiers) 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 ne travail puis une explication détaillée de la manière de les configurer pour VS 2010 serait appréciée.

Merci.

30voto

Noah Richards Points 4776

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

Cette réponse ne fonctionne que dans VS2010 (semble juste :]). J'ai mis la source sur mon github page. Avant que vous pouvez construire, vous devez installer le SDK. Une fois que vous avez fait cela, il suffit de saisir la source complète à partir de github (inclut les fichiers de projet) et à bâtir. Vous pouvez installer le fichier de sortie en normal VS instances de trouver le VSIX dans votre sortie de la construction et de l'ouvrir.

L'important, c'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ù est - 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.

7voto

Koob Points 71

Edit: Voir maintenant qui Va me battre sur ce un Pour VS2010 il existe un add-in qui peut faire cela, et beaucoup plus. VSCommands 2010, via http://vscommands.com/features/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X