2010-09-02 9 views
21

A menudo, necesito volver a compilar y lleva uno o dos minutos, por lo que tiendo a cambiar a un navegador web para matar ese momento. A veces me olvido de mirar hacia atrás y la compilación tuvo éxito unos minutos antes de que me diera cuenta.¿Cómo puedo obtener Visual Studio para que me avise si una compilación tiene éxito?

¿Es posible de alguna manera obtener Visual Studio (solo la versión de la interfaz de usuario, no la línea de comandos) para emitir un pitido si la compilación (para el proyecto o la solución) finaliza correctamente sin previo aviso?

También es útil un pitido cuando se golpea el primer punto de interrupción durante la depuración, ya que a veces tengo que esperar uno o dos minutos para que esto también suceda.

¿Necesito escribir una macro para eso, quizás? ¿Hay configuraciones ocultas en alguna parte?

+0

Posible duplicado de [IDE de Visual Studio: Quiero que se haga un sonido después de que se compila para que pueda volver al trabajo] (http://stackoverflow.com/questions/2836947/visual-studio -ide-i-want-it-to-make-a-sound-after-it-compiles-so-i-can-get-back) y [¿Cómo recibo la notificación de que la compilación local de Visual Studio está completa?] (http://stackoverflow.com/questions/1710334/how-do-i-get-notification-that-the-local-visual-studio-build-is-complete) – chwarr

Respuesta

15

Estoy viendo en mi sistema Suena una categoría llamada "Microsoft Visual Studio Macros" que contiene tres sonidos: Build Cancelled, Build Failed y Build Succeeded. Supongo que llegaron de las macros de muestra que se instalan por defecto. Podría intentar presionar Alt-F8 en VS y hurgando en las macros.

Mi solución favorita es ésta: VSBuildStatus. Si tiene Windows 7, mostrará el progreso de compilación en la barra de tareas (como hace Explorer con la copia de archivos). Se pone rojo en una falla de compilación. Debe tener.

http://visualstudiogallery.msdn.microsoft.com/en-us/2A2293B4-1808-44AA-B030-661F6803D8A1

+0

Aww, esto está limpio (sonidos del sistema, no pensé en mirar allí). Lamentablemente, estoy usando Win2k8 VM, y no hay ningún dispositivo de sonido instalado (para reproducir archivos .wav) y la barra de tareas no se ve tan bonita sin Aero instalado:/ –

7

Aquí es una macro que se encuentra en: http://elegantdevelopment.blogspot.com/2009/09/visual-studio-2008-macro-fun.html

Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
    If (Not failed) Then 
     ' System.Windows.Forms.MessageBox.Show("Build is complete!") 
     Beep() 
     Threading.Thread.Sleep(250) 
     Beep() 
    End If 
End Sub 

Buena suerte!

1

Creo que la forma más fácil es hacer lo siguiente

  • Crear una aplicación de línea de comandos simple que llama a la Win32 Beep función
  • instalación de un evento posterior acumulación para funcionar con éxito acumulación
  • de llamada que App
+0

+1 o incluso solo un archivo por lotes en lugar de una aplicación: http://forums.whirlpool.net.au/archive/564510 – joelt

+0

Realmente no quiero modificar las propiedades de post-construcción para cada proyecto para lograr esto - a veces estoy construyendo diferentes proyectos que tienen requisitos previos para otros para construir, eso podría desencadenar todo tipo de pitidos prematuros si tuviera que hacer que cada uno contenga un evento de postconstrucción que llame a una aplicación beeper win32. –

1

Solía ​​usar el evento toaster para visual studio que muestra eventos en la bandeja del sistema, lo usé para las compilaciones porque también me aburría esperando compilaciones :) No lo usé en un tiempo sin embargo.

+0

Esto parece prometedor. –

+0

Utilicé esto para mis necesidades ya que mi máquina es una máquina virtual con servidor Win2k8 y desafortunadamente no hay ningún dispositivo de sonido disponible (los sonidos del sistema son lo único que regresa a mi caja física). –

4
  1. abrir un Explorador de macros (Alt + F8).
  2. Crea un nuevo macroproyecto si aún no lo tienes.
  3. Abrir Microsoft Visual Studio Macros (Alt + F11)
  4. Si aún no tiene una macro titulada EnvironmentEvents créela.
  5. Asegúrese de que la macro contiene el siguiente código (¡preste atención al fragmento en la parte inferior!)

El código:

Option Strict Off 
Option Explicit Off 
Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports EnvDTE90a 
Imports EnvDTE100 
Imports System.Diagnostics 

Public Module EnvironmentEvents 

    #Region "Automatically generated code, do not modify" 

    'Automatically generated code, do not modify 
    'Event Sources Begin 
    <System.ContextStaticAttribute()> Public WithEvents DTEEvents As EnvDTE.DTEEvents 
    <System.ContextStaticAttribute()> Public WithEvents DocumentEvents As EnvDTE.DocumentEvents 
    <System.ContextStaticAttribute()> Public WithEvents WindowEvents As EnvDTE.WindowEvents 
    <System.ContextStaticAttribute()> Public WithEvents TaskListEvents As EnvDTE.TaskListEvents 
    <System.ContextStaticAttribute()> Public WithEvents FindEvents As EnvDTE.FindEvents 
    <System.ContextStaticAttribute()> Public WithEvents OutputWindowEvents As EnvDTE.OutputWindowEvents 
    <System.ContextStaticAttribute()> Public WithEvents SelectionEvents As EnvDTE.SelectionEvents 
    <System.ContextStaticAttribute()> Public WithEvents BuildEvents As EnvDTE.BuildEvents 
    <System.ContextStaticAttribute()> Public WithEvents SolutionEvents As EnvDTE.SolutionEvents 
    <System.ContextStaticAttribute()> Public WithEvents SolutionItemsEvents As EnvDTE.ProjectItemsEvents 
    <System.ContextStaticAttribute()> Public WithEvents MiscFilesEvents As EnvDTE.ProjectItemsEvents 
    <System.ContextStaticAttribute()> Public WithEvents DebuggerEvents As EnvDTE.DebuggerEvents 
    <System.ContextStaticAttribute()> Public WithEvents ProjectsEvents As EnvDTE.ProjectsEvents 
    <System.ContextStaticAttribute()> Public WithEvents TextDocumentKeyPressEvents As EnvDTE80.TextDocumentKeyPressEvents 
    <System.ContextStaticAttribute()> Public WithEvents CodeModelEvents As EnvDTE80.CodeModelEvents 
    <System.ContextStaticAttribute()> Public WithEvents DebuggerProcessEvents As EnvDTE80.DebuggerProcessEvents 
    <System.ContextStaticAttribute()> Public WithEvents DebuggerExpressionEvaluationEvents As EnvDTE80.DebuggerExpressionEvaluationEvents 
    'Event Sources End 
    'End of automatically generated code 

    #End Region 


    Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
     'Beep to notify that we finished building 
     Console.Beep() 
     Threading.Thread.Sleep(250) 
     'Beep again just for fun 
     Console.Beep() 
     ' Alternatively, or in Addition to the motherboard beeps, you can 
     ' play a sound from your hard drive via your audio card like so: 
     My.Computer.Audio.Play("C:\WINDOWS\Media\Windows XP Startup.wav", _ 
      AudioPlayMode.Background) 
    End Sub 


End Module 

FYI: He encontrado que Console.Beep() de Windows 7 es no un pitido placa base. También, me gusta bastante "C: \ Windows \ Media \ Windows Shutdown.wav" para el clip de audio cuando en Windows 7.

1

Existe una extensión llamada Ding que parece hacer lo que busca:

"Esta pequeña extensión reproducirá sonidos de notificación cuando ocurran los siguientes eventos: - Build Complete - Entrar al modo de depuración (punto de inflexión, etc.) - Pruebas unitarias terminadas para funcionar Útil cuando se trabaja con soluciones grandes o cuando construcción/prueba/golpea un punto de interrupción un montón de tiempo ..."

https://visualstudiogallery.msdn.microsoft.com/941d0ed0-1218-452e-8585-d3ac693cda17

+0

Gracias por una nueva respuesta y solución potencial. En el momento en que hice esta pregunta, la extensión de Ding a la que se refería no existía (2010), y yo estaba usando Visual Studio 2005 y 2008 (aunque no especifique qué versión de VS en la pregunta). –

Cuestiones relacionadas