Arresta automaticamente la generazione di Visual C ++ 2008 al primo errore di compilazione?

So di poter compilare i singoli file sorgente, ma a volte, ad esempio, quando si modifica un file di intestazione utilizzato da molti file .cpp , è necessario ricompilare più file di origine. Ecco a cosa serve Build.

Il comportamento predefinito del comando “Build” in VC9 (Visual C ++ 2008) consiste nel tentare di compilare tutti i file che ne hanno bisogno. A volte questo si traduce in molte compilazioni fallite. Solitamente osservo gli errori e premo ctrl-break per fermare manualmente la compilazione.

C’è un modo per configurarlo in modo tale che la compilazione si fermi automaticamente al primo errore di compilazione (non alla prima build del progetto fallita)?

Mi sono inventato dei macro-ragazzi migliori. Si ferma immediatamente dopo il primo errore / i (appena la finestra di compilazione viene aggiornata).

Visual Studio -> Strumenti -> Macro -> Macro IDE … (o ALT + F11)

 Private Sub OutputWindowEvents_OnPaneUpdated(ByVal pPane As OutputWindowPane) Handles OutputWindowEvents.PaneUpdated If Not (pPane.Name = "Build") Then Exit Sub pPane.TextDocument.Selection.SelectAll() Dim Context As String = pPane.TextDocument.Selection.Text pPane.TextDocument.Selection.EndOfDocument() Dim found As Integer = Context.IndexOf(": error ") If found > 0 Then DTE.ExecuteCommand("Build.Cancel") End If End Sub 

Spero che funzioni per voi ragazzi.

Questo può essere fatto aggiungendo una macro che viene eseguita in risposta all’evento OnBuildProjConfigDone.

La macro è la seguente:

 Private Sub BuildEvents_OnBuildProjConfigDone(ByVal Project As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone If Success = False Then DTE.ExecuteCommand("Build.Cancel") End If End Sub 

Sì, questo funziona bene su MSVC 2005-2010:

 Public Module EnvironmentEvents Private Sub OutputWindowEvents_OnPaneUpdated(ByVal pPane As OutputWindowPane) Handles OutputWindowEvents.PaneUpdated If Not (pPane.Name = "Build") Then Exit Sub Dim foundError As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": error") Dim foundFatal As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": fatal error") If foundError Or foundFatal Then DTE.ExecuteCommand("Build.Cancel") End If End Sub End Module 

So che la domanda era per VS 2008, ma mi sono imbattuto in esso durante la ricerca della stessa risposta per VS 2012. Dal momento che le macro non sono più supportate nel 2012, le soluzioni macro non funzioneranno più.

Puoi scaricare un’estensione che apparentemente funziona in VS 2010 e 2012 qui . Posso confermare che funziona bene in VS 2012.

Il collegamento originale all’estensione è stato fornito in questa risposta.

C’è questo post : non è sicuro se arresta la generazione al primo errore o il primo progetto fallito in una soluzione.

Ctrl-break lo fermerà anche manualmente.

Ora, se ci fosse un modo per fermarlo, spendere 10 minuti per ribuild l’intelisense dopo una build fallita!

Puoi anche scaricare questa estensione, sembra funzionare per ogni versione di Visual Studio