c# 安裝,卸載及如何調試自編寫的服務

安裝與卸載服務的方法:
與在 Visual Studio .NET 中創建的大多數項目不同,Windows 服務項目不能通過按 F5 鍵從開發環境直接運行。這是因爲必須安裝項目中的服務後,項目才能運行。
使用名爲 InstallUtil.exe 的命令行實用程序,您可以迅速安裝服務應用程序。您還可以創建一個安裝項目來包含項目的輸出,並使用它創建一個自定義操作,該操作將運行與項目關聯的安裝程序並安裝您的服務。
手動安裝服務
訪問項目中的已編譯可執行文件所在的目錄。
用項目的輸出作爲參數,從命令行運行 InstallUtil.exe。在命令行中輸入下列代碼:
installutil yourproject.exe
手動卸載服務
用項目的輸出作爲參數,從命令行運行 InstallUtil.exe。在命令行中輸入下列代碼:
installutil /u yourproject.exe

調試服務的方法:
由於服務必須從服務控制管理器的上下文中運行,而不是從 Visual Studio .NET 中運行,因此調試服務不像調試其他 Visual Studio 應用程序類型那樣簡單。若要調試服務,必須首先啓動服務,然後將一個調試器附加到正在運行服務的進程中。然後可以使用 Visual Studio 的所有標準調試功能來調試應用程序。

警告   除非知道進程是什麼,並且知道附加到進程或可能會取消進程所帶來的後果,否則不要附加到進程。例如,如果附加到 WinLogon 進程,然後停止調試,系統就會暫停,因爲沒有 WinLogon,系統無法運行。
只能將調試器附加到正在運行的服務。附加進程會中斷服務的當前運行;它並不真正終止或暫停服務的處理。也就是說,如果開始調試時服務正在運行,則在進行調試時,該服務從技術上說仍處於“已啓動”狀態,但它的處理已掛起。

附加到服務的進程使您能夠調試大多數服務代碼,但並非全部;例如,由於服務已經啓動,因此不能用這種方法調試服務的 OnStart 方法中的代碼,或調試用於加載服務的 Main 方法中的代碼。解決此問題的一個方法是:在唯一作用是幫助調試的服務應用程序中創建一個臨時服務。可以將兩個服務都安裝上,然後啓動此“虛擬”服務加載服務進程。臨時服務啓動了進程後,就可以使用 Visual Studio .NET 中的“調試”菜單來附加到服務進程。

當附加該進程之後,可以設置斷點並使用這些斷點來調試代碼。當退出用於附加到該進程的對話框時,實際上已處於調試模式。您可以使用服務控制管理器開始、停止、暫停和繼續您的服務,因此命中已設置的斷點。調試成功後,移除此“虛擬”服務。

注意   調試 OnStart 方法可能比較困難,因爲 Windows 服務管理器將所有嘗試啓動服務的時間限制在 30 秒內。有關更多信息,請參見疑難解答:調試 Windows 服務。
調試服務

安裝您的服務。
可從服務控制管理器、“服務器資源管理器”或代碼啓動服務。
在 Visual Studio 中,從“調試”菜單中選擇“進程”。
出現“進程”對話框。

單擊“顯示系統進程”。
在“可用進程”區域內單擊服務的進程,然後單擊“附加”。
提示   此進程將與服務的可執行文件同名。
出現“附加到進程”對話框。

選擇任意適當選項,然後單擊“確定”關閉對話框。
注意   您現在已處於調試模式。
設置要在代碼中使用的任意斷點。
訪問服務控制管理器並操縱您的服務,併發送停止、暫停和繼續命令以命中您的斷點。

發佈了40 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章