В Visual Studio есть удобная возможность присоединения к запущенному процессу (Инструменты — Присоединиться к процессу.
) во время отладки.
Удобно до тех пор, пока вам не придется делать это с завидной регулярностью, тогда выбор нужного процесса из открывшегося списка становится крайне утомительным.
Именно поэтому возникает желание автоматизировать эти простые действия.
Давайте рассмотрим решение на примере Visual Studio 2010; принципиальных отличий от других версий нет.
1. Сначала в Macro Explorer (Инструменты – Макросы – Macro Explorer) создадим новый модуль AttachToProcess.
2. В коде модуля добавьте функцию для присоединения к процессу с помощью параметра ProcessName.
3. Добавим метод, который в дальнейшем будет использоваться для вызова из Visual Studio. Он определяет имя процесса.Public Function AttachToProcess(ByVal ProcessName As String) As Boolean Dim success As Boolean success = True Try Dim debugger As EnvDTE80.Debugger2 = DTE.Debugger Dim transport As EnvDTE80.Transport = debugger.Transports.Item("Default") Dim name As String = System.Security.Principal.WindowsIdentity.GetCurrent().
Name name = name.Substring(0, name.IndexOf("\")) Dim process As EnvDTE80.Process2 = debugger.GetProcesses(transport, name).
Item(ProcessName) process.Attach() Catch ex As System.Exception success = False End Try Return success End Function
Sub AttachToW3WP()
If Not AttachToProcess("w3wp.exe") Then
System.Windows.Forms.MessageBox.Show("Cannot attach to process")
End If
End Sub
Окончательный код модуля.
Public Module AttachToProcess
Public Function AttachToProcess(ByVal ProcessName As String) As Boolean
Dim success As Boolean
success = True
Try
Dim debugger As EnvDTE80.Debugger2 = DTE.Debugger
Dim transport As EnvDTE80.Transport = debugger.Transports.Item("Default")
Dim name As String = System.Security.Principal.WindowsIdentity.GetCurrent().
Name name = name.Substring(0, name.IndexOf("\")) Dim process As EnvDTE80.Process2 = debugger.GetProcesses(transport, name).
Item(ProcessName)
process.Attach()
Catch ex As System.Exception
success = False
End Try
Return success
End Function
Sub AttachToW3WP()
If Not AttachToProcess("w3wp.exe") Then
System.Windows.Forms.MessageBox.Show("Cannot attach to process")
End If
End Sub
End Module
Вы можете запустить макрос вручную и проверить, что всё работает как надо.
4. Добавьте панель инструментов для кнопки вызова макроса (Вид - Панели инструментов - Настроить.
).
5. Добавьте кнопку (команду).
Как ни удивительно, макросы относятся к категории «Макросы».
Теперь у нас есть панель с кнопкой быстрого присоединения к процессу.
6. Последний штрих.
Назначьте комбинацию клавиш для запуска макроса.
Вуаля! Отныне вы можете вызвать Attach к нужному процессу в один клик или с помощью горячих клавиш.
Теги: #Visual Studio #присоединиться к процессу #Visual Studio
-
Цвета #Bada55 Для Веб-Дизайна
19 Oct, 24