How can I get Visual Studio to beep at me if a build succeeds?

后端 未结 7 1347
庸人自扰
庸人自扰 2020-12-14 16:58

Often, I need to recompile and it takes a minute or two, so I tend to switch to a web browser to kill that time. Sometimes I forget to look back and the build succeeded a fe

7条回答
  •  离开以前
    2020-12-14 17:16

    1. Open Up a Macro Explorer (Alt + F8).
    2. Create a new Macro Project if you don't have one already.
    3. Open up Microsoft Visual Studio Macros (Alt + F11)
    4. If you don't already have a macro titled EnvironmentEvents create it.
    5. Make sure the macro contains the following code (pay attention to the snippet at the bottom!)

    The code:

    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
         Public WithEvents DTEEvents As EnvDTE.DTEEvents
         Public WithEvents DocumentEvents As EnvDTE.DocumentEvents
         Public WithEvents WindowEvents As EnvDTE.WindowEvents
         Public WithEvents TaskListEvents As EnvDTE.TaskListEvents
         Public WithEvents FindEvents As EnvDTE.FindEvents
         Public WithEvents OutputWindowEvents As EnvDTE.OutputWindowEvents
         Public WithEvents SelectionEvents As EnvDTE.SelectionEvents
         Public WithEvents BuildEvents As EnvDTE.BuildEvents
         Public WithEvents SolutionEvents As EnvDTE.SolutionEvents
         Public WithEvents SolutionItemsEvents As EnvDTE.ProjectItemsEvents
         Public WithEvents MiscFilesEvents As EnvDTE.ProjectItemsEvents
         Public WithEvents DebuggerEvents As EnvDTE.DebuggerEvents
         Public WithEvents ProjectsEvents As EnvDTE.ProjectsEvents
         Public WithEvents TextDocumentKeyPressEvents As EnvDTE80.TextDocumentKeyPressEvents
         Public WithEvents CodeModelEvents As EnvDTE80.CodeModelEvents
         Public WithEvents DebuggerProcessEvents As EnvDTE80.DebuggerProcessEvents
         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: I've found that Windows 7's Console.Beep() is not a motherboard beep. Also, I quite like "C:\Windows\Media\Windows Shutdown.wav" for the audio clip when on Windows 7.

提交回复
热议问题