Как заставить Visual Studio подать звуковой сигнал, если сборка прошла успешно? - PullRequest
23 голосов
/ 02 сентября 2010

Часто мне нужно перекомпилировать, и это занимает минуту или две, поэтому я склонен переключаться на веб-браузер, чтобы убить это время.Иногда я забываю оглянуться назад, и сборка прошла успешно за несколько минут, прежде чем я заметил.

Можно ли каким-то образом заставить Visual Studio (только версию пользовательского интерфейса, а не командную строку) подать мне звуковой сигнал, если сборка (дляпроект или решение) успешно завершается без предупреждения?

Также полезно будет подать звуковой сигнал при достижении первой точки останова во время отладки, поскольку иногда мне приходится ждать одну или две минуты, чтобы это произошло.

Мне нужно написать макрос для этого, возможно?Где-то есть скрытые настройки?

Ответы [ 7 ]

19 голосов
/ 02 сентября 2010

Я вижу в своих системных звуках категорию «Макросы Microsoft Visual Studio», которая содержит три звука: «Отмена сборки», «Ошибка сборки» и «Успешность сборки». Я предполагаю, что они попали туда из примеров макросов, которые устанавливаются по умолчанию. Можно попробовать нажать Alt-F8 в VS и ковыряться в макросах.

Мое любимое решение, хотя это: VSBuildStatus. Если у вас есть Windows 7, она покажет ход сборки на панели задач (как это делает Проводник при копировании файлов). Горит красным при сбое сборки. Должен иметь.

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

7 голосов
/ 02 сентября 2010

Вот макрос, найденный по адресу: 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

Удачи!

4 голосов
/ 10 августа 2011
  1. Откройте Macro Explorer (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

К вашему сведению: Я обнаружил, что Windows 101 Console.Beep() является , а не звуком материнской платы.Кроме того, мне очень нравится «C: \ Windows \ Media \ Windows Shutdown.wav» для аудиоклипа в Windows 7.

2 голосов
/ 24 октября 2017

Для этого в Microsoft Windows уже есть встроенная функция.Перейдите в Панель управления> Управление аудиоустройствами> вкладка «Звуки».Затем прокрутите вниз, чтобы настроить «Отмена сборки», «Сбой» или «Успешно».

Visual Studio IDE: я хочу, чтобы он издал звук после компиляции, чтобы я мог вернуться к работе

1 голос
/ 16 июня 2016

Существует расширение под названием Ding, которое, кажется, делает то, что вы ищете:

"Это небольшое расширение будет воспроизводить звуки уведомлений, когда происходят следующие события: - Build Complete - вход в режим отладчика (попадание на точку останова и т. Д.)) - модульные тесты завершены для запуска Полезно при работе с большими решениями или когда сборка / тестовый запуск / достижение точки останова занимают много времени ... "

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

1 голос
/ 02 сентября 2010

Раньше я использовал тостер событий для Visual Studio, который отображает события в системном трее, я использовал его для сборок, потому что мне тоже стало скучно ждать сборок :) Хотя я не использовал его некоторое время.

1 голос
/ 02 сентября 2010

Я думаю, что проще всего сделать следующее

  • Создание простого приложения командной строки, которое вызывает функцию Win32 Beep
  • Настройка события после сборки для запуска при успешной сборке
  • Звоните, что приложение
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...