Reputation: 8241
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 few minutes before I noticed.
Is it possible to somehow get Visual Studio (just UI version, not command line) to beep at me if the build (for the project or solution) completes successfully without warning?
Also helpful would be a beep when the first breakpoint is hit while debugging, since sometimes I have to wait a minute or two for this to happen as well.
Do I need to write a macro for it, perhaps? Are there hidden settings somewhere?
Upvotes: 28
Views: 9024
Reputation: 138
There is already a build in function in Microsoft windows for this. Go to Control Panel > Manage audio Devices > Sounds tab. Then scroll to the bottom to configure Build Canceled, Failed, or Succeeded.
Visual Studio IDE: I want it to make a sound after it compiles so I can get back to work
Upvotes: 4
Reputation: 43
There is an extension called Ding that seems to do what you are looking for:
"This small extension will play notification sounds when following events occur: - Build Complete - Entering debugger mode (breakpoint hit, etc) - Unit tests finished to run Useful when working with big solutions or when build/test run/hitting a breakpoint takes a lot of time ..."
https://visualstudiogallery.msdn.microsoft.com/941d0ed0-1218-452e-8585-d3ac693cda17
Upvotes: 1
Reputation: 89412
Alt + F8
).Alt + F11
)EnvironmentEvents
create it.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
<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: 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.
Upvotes: 4
Reputation: 1690
I used to use the event toaster for visual studio which display events in the system tray, I used it for builds because I too got bored waiting for builds :) Not used it in a while though.
Upvotes: 1
Reputation: 14558
I'm seeing in my System Sounds a category called "Microsoft Visual Studio Macros" that contains three sounds: Build Canceled, Build Failed, and Build Succeeded. I'm guessing they got there from the sample macros that get installed by default. Might try hitting Alt-F8 in VS and poking around in the macros.
My favorite solution is this one though: VSBuildStatus. If you've got Windows 7, it will show the build progress in the taskbar (like Explorer does with file copying). Turns red on a build failure. Must-have.
http://visualstudiogallery.msdn.microsoft.com/en-us/2A2293B4-1808-44AA-B030-661F6803D8A1
Upvotes: 20
Reputation: 755587
I think the easiest way is to do the following
Upvotes: 1
Reputation: 10140
Here is a macro found at: 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
Good luck!
Upvotes: 7