2010-06-03 27 views

回答

1

在你的主函數中,不是調用ServiceBase.Run(servicesToRun),而是運行你想測試的實際代碼。

我通常把代碼檢查命令行參數爲:

-c run in console mode 
-i install the service 
-u uninstall the service 
none run the service 

然後設置VS在-c同時發送調試模式。

+0

這種類型的東西恰恰是什麼TopShelf爲你自動化:-) – 2010-06-03 09:01:49

+0

可能,但它也是3個額外的dll,沒有任何易於訪問的文檔以及許可證的常見擔心以及它的寫入方式。如果我需要所有額外的功能,我確定它包含(雖然我不確定它們是什麼,因爲描述是相當基本的),我可能會感興趣。 – 2010-06-03 09:26:27

3

您是否將服務寫在首位?如果是這樣,請幫助自己並使用TopShelf。它可以讓您創建一個簡單的控制檯應用程序,您可以將其作爲控制檯應用程序進行調試,但它也可以註冊爲服務並按此方式運行。

根據我的經驗,大量方便,因爲您可以根據需要輕鬆調試服務而無需更改任何代碼。

+0

+1的鏈接。 – dotnetdev 2010-06-03 09:09:47

0

這裏有一些代碼可以用來附加調試器。過去在開始的過程中,我發現很難附加一個調試器。當我在CodeProject上發現這個奇妙的剪輯時,我相信。

無論如何,將此添加到OnStart中,構建,安裝並啓動您的服務。一旦你開始,它會看起來像掛了。附加到服務過程中(確保你有正確連接到所選代碼庫和魄力,你甚至可以調試啓動。

protected override void OnStart(string[] args) 
{ 
#if DEBUG 
    while (!Debugger.IsAttached)  // Waiting until debugger is attached 
    { 
     RequestAdditionalTime(1000); // Prevents the service from timeout 
     Thread.Sleep(1000);   // Gives you time to attach the debugger 
    } 
    RequestAdditionalTime(20000);  // for Debugging the OnStart method, 
             // increase as needed to prevent timeouts 
#endif 

    // here is your startup code with breakpoints 
} 

HTH

相關問題