6

Quiero ejecutar un script por lotes cada vez antes de iniciar el programa para la depuración.Ejecutar script por lotes antes de la depuración

Para los eventos de compilación, dicha funcionalidad se realiza mediante un evento de preconstrucción, un evento posterior a la compilación.

Para la depuración real, no pude encontrar ningún evento previo a la depuración, posterior a la depuración.

¿Cómo realizar este escenario?

Estoy usando VS2008, .net framework 3.5, C# application.

Me opongo a la idea de crear algunas líneas adicionales de código dentro de la aplicación que desencadenaría un archivo por lotes externo.

Respuesta

9

Me di cuenta de que deseaba evitar el código adicional, pero en su función Main puede usar Debugger.IsAttached() para comenzar su trabajo por usted.

Por ejemplo:

if (Debugger.IsAttached) 
{ 
    System.Diagnostics.Process.Start(@"C:\myBatchFile.bat"); 
} 
0
if $(ConfigurationName) == Debug mkdir c:\mydir 

Usted debe comprobar fuera ... How to run Visual Studio post-build events for debug build only

+1

En realidad necesito algo que se dispara justo antes de depuración, no después de evento posterior a la construcción. Tengo que ejecutar un script cada vez que la herramienta se inicia en modo de depuración. Aunque no hay cambios en el código fuente (y por lo tanto no hay compilación, solo lanzamiento de la herramienta). – Tilak

-2

Por lo tanto, tiene un archivo .bat que desea ejecutar a través del evento de pre-construcción? Intente especificar la ruta completa a su archivo de proceso por lotes en el comando de evento previo a la compilación, p.

cmd /c C:\Path\to\foo.bat 

o

cmd C:\windows\system32\cmd.exe /c C:\Path\to\foo.bat 
+0

Probablemente ha entendido mal la pregunta. Solo tenga en cuenta que los eventos "Pre/Post-compilación" no se ejecutan antes de que se inicie CUALQUIER depuración. Por ejemplo, si no ha realizado ningún cambio en su código después de la última compilación, la compilación no se desencadenará antes de la depuración. –

3

Usted puede utilizar una macro VS.

que tenían el mismo problema y esto es lo mejor que vine con lo que va

Dim MustUpdateDB As Boolean 

    Private Sub DebuggerEvents_OnEnterRunMode(ByVal Reason As EnvDTE.dbgEventReason) Handles DebuggerEvents.OnEnterRunMode 
     If (MustUpdateDB) Then 
      MsgBox("Start debug operation", MsgBoxStyle.OkOnly, "TITLE") 
      REM DO WHATEVER COMMAND HERE 
      REM System.Diagnostics.Process.Start("C:\listfiles.bat") 
      MustUpdateDB = False 
     End If 


    End Sub 

    Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
     MsgBox("Build Done", MsgBoxStyle.OkOnly, "Title") 
     MustUpdateDB = True 
    End Sub 

Hay una muy buena explicación acerca de cómo agregar controladores de eventos a un here

El único problema macro Hasta ahora he descubierto cómo obtener el directorio activo de la aplicación actualmente depurada

Cuestiones relacionadas