代码之家  ›  专栏  ›  技术社区  ›  Mike Atlas

如果生成成功,如何让Visual Studio向我发出哔哔声?

  •  23
  • Mike Atlas  · 技术社区  · 14 年前

    通常,我需要重新编译,这需要一两分钟,所以我倾向于切换到Web浏览器来消磨时间。有时我忘记回头看,在我注意到之前几分钟,构建成功了。

    如果构建(针对项目或解决方案)成功完成而不发出警告,是否可以让Visual Studio(只是UI版本,而不是命令行)以某种方式向我发出哔哔声?

    在调试过程中,当第一个断点被击中时发出哔哔声也很有帮助,因为有时我还需要等待一两分钟,这样才能发生。

    我是否需要为它编写宏?是否有隐藏的设置?

    7 回复  |  直到 7 年前
        1
  •  19
  •   scobi    14 年前

    在我的系统中,我看到了一个名为“Microsoft Visual Studio宏”的类别,它包含三种声音:取消生成、失败生成和成功生成。我猜他们是从默认情况下安装的示例宏中得到的。可能尝试在vs中按alt-f8,然后在宏中搜索。

    我最喜欢的解决方案是:vsbuildstatus。如果您有Windows7,它将在任务栏中显示构建进度(就像Explorer复制文件一样)。生成失败时变为红色。一定有。

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

        2
  •  7
  •   Kevin Crowell    14 年前

    以下是在以下位置找到的宏: 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
    

    祝你好运!

        3
  •  4
  •   David Murdoch    13 年前
    1. 打开宏资源管理器( Alt + F8 )
    2. 如果尚未创建宏项目,请创建一个新的宏项目。
    3. 打开Microsoft Visual Studio宏( Alt + F11 )
    4. 如果您还没有一个名为 EnvironmentEvents 创造它。
    5. 确保宏包含以下代码(注意底部的代码段!)

    代码:

    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
    

    仅供参考:我发现Windows7 Console.Beep() 主板发出嘟嘟声。另外,在Windows7上,我非常喜欢“c:\windows\media\windows shutdown.wav”作为音频剪辑。

        4
  •  2
  •   Vkl125    7 年前

    在Microsoft Windows中已经有一个用于此的内置函数。转到“控制面板”>“管理音频设备”>“声音”选项卡。然后滚动到底部以配置已取消、失败或成功的生成。

    Visual Studio IDE: I want it to make a sound after it compiles so I can get back to work

        5
  •  1
  •   JaredPar    14 年前

    我认为最简单的方法是

    • 创建一个简单的命令行应用程序,调用 Win32 Beep 功能
    • 设置生成后事件以在生成成功时运行
    • 调用那个应用程序
        6
  •  1
  •   Community Jaime Torres    7 年前

    我曾经在Visual Studio中使用事件烤面包机,它在系统托盘中显示事件,我将它用于生成,因为我在等待生成时太无聊了:)但是不久之后就不用了。

        7
  •  1
  •   dimmalo    8 年前

    有一个扩展名为“丁”,似乎可以满足您的需求:

    “当发生以下事件时,此小扩展将播放通知声音:-生成完成-进入调试程序模式(断点命中等)-单元测试完成以运行在使用大型解决方案或生成/测试运行/命中断点需要很长时间…”

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