首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Visual Studio 巨集一鍵附加至 IIS 工作進程(w3wp.exe / aspnet_wp.exe)

     編輯:關於.NET

開發 ASP.NET 應用時,頻繁使用「偵錯 → 附加至處理序」選擇 w3wp.exe (IIS 6.0+) 或 aspnet_wp.exe (IIS 5.0) 極為繁瑣。透過 VS 巨集自動化此流程,一鍵完成附加,大幅提升效率。

巨集程式碼

在 巨集總管 中建立新巨集模組(如 DebuggerMacros),貼入以下程式碼:


Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module Debugger
    Public Sub AttachToWebServer()
        Dim aspNetWp As String = "aspnet_wp.exe"
        Dim w3wp As String = "w3wp.exe"

        If Not AttachToProcess(aspNetWp) Then
            If Not AttachToProcess(w3wp) Then
                MsgBox(String.Format("找不到處理序 {0} 或 {1}", aspNetWp, w3wp), vbExclamation, "附加至 Web Server 巨集")
            End If
        End If
    End Sub

    Private Function AttachToProcess(ByVal processName As String) As Boolean
        Dim processes As EnvDTE.Processes = DTE.Debugger.LocalProcesses
        Dim processFound As Boolean = False

        For Each proc As EnvDTE.Process In processes
            ' 處理序名稱格式為 "C:\Windows\System32\inetsrv\w3wp.exe",取檔名部分比對
            If proc.Name.Substring(proc.Name.LastIndexOf("\"c) + 1).Equals(processName, StringComparison.OrdinalIgnoreCase) Then
                proc.Attach()
                processFound = True
                Exit For
            End If
        Next
        Return processFound
    End Function
End Module

使用方式

  1. 巨集總管 → 右鍵模組 → 建立快捷鍵(如 Ctrl+Alt+A)。
  2. 或工具列 → 自訂 → 鍵盤 指令 Macros.Debugger.AttachToWebServer 綁定熱鍵。
  3. 啟動 IIS 網站 → 按熱鍵 → 自動附加至第一個找到的 w3wp.exe 或 aspnet_wp.exe。

進階擴充建議

  • 多網站支援:列出所有符合的處理序讓使用者選擇(InputBox 或自訂表單)。
  • 遠端除錯:改用 DTE.Debugger.RemoteProcesses 連接遠端伺服器。
  • 自動啟動網站:結合 DTE.ExecuteCommand("Debug.StartWithoutDebugging") 實現「建置→啟動→附加」一鍵流程。

注意事項

  1. VS 2012+ 已移除巨集支援,改用 擴充套件 或 Attach to Process 增強擴充(如 Attach To All The Things)。
  2. 需以系統管理員身分執行 VS 才能附加至 IIS 工作進程。
  3. 若應用程式集區啟用 32 位元模式,處理序名稱仍為 w3wp.exe,但模組載入路徑不同。

出處:zhangronghua 的博客

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved