2016-01-19 31 views
0

我知道這個問題已被問了1000次,但我從來沒有見過一個很好的答案。我想調試我的Windows服務,並試圖將Visual Studio附加到它。從那裏開始,我不知道該怎麼辦?如何通過附加visual studio來調試windows服務?

我的服務正在運行,我放置了一些斷點並且連接了調試器,但它從不執行任何操作。我在我的服務中有一個定時器,它在特定時間執行一個方法。我爲該方法設置了一個斷點,我的Service執行了它,但沒有識別出斷點。

有人可以向我解釋如何正確地做,或者如果它可以一步一步與屏幕截圖。

我真的想與附着米到做

謝謝

+0

對於這一點,你需要的解決方案,以創造一種形式和複印服務代碼功能按鈕點擊事件。正如我這樣做,我可以建議你做同樣的事情。 – pedram

+2

不是一個真正的答案,所以你會得到一個評論。如果使用topshelf(http://topshelf-project.com/)創建服務,則可以將它們作爲普通應用程序啓動,它們的工作方式與作爲服務運行時相同,但它們更易於調試 – Dimse

+4

可能的[更簡單的方法來調試C#Windows服務](http://stackoverflow.com/questions/125964/easier-way-to-debug-ac-sharp-windows-service),也[調試Windows服務](http:// stackoverflow.com/questions/2629720/debug-windows-service),也[如何在Visual Studio中調試Windows服務?](http://stackoverflow.com/questions/4678819/how-to-debug-windows-services- in-visual-studio)和[更多](https://www.google.co.uk/search?q=debug+windows+service+site:stackoverflow.com) – stuartd

回答

0

另一種可能是,這取決於你的Windows服務的功能,使用單元測試作爲「切入點」進入應用程序並以這種方式貫穿整個過程。

[TestMethod] 
public void MyServiceEntryPoint() 
{ 
    var service = new Service1(); 
} 
1

在重寫OnStart()你必須添加下列條件塊吧:

protected override void OnStart(string[] args) 
{ 
    #if DEBUG 
    System.Diagnostics.Debugger.Launch(); 
    #endif 

    // you code here 
    // for example you time initialization here 
} 

更多這方面的詳細信息,請參見this MSDN link

上述方法是,當你想在系統上安裝它,然後對它進行調試,如果你也可以對它進行調試,而無需安裝則是指this article