2009-12-21 81 views
0

在Visual Studio中,當我嘗試啓動一個Windows服務項目時,它告訴我我不能使用「NET Start」等等。如何在Visual Studio 2008中啓動Windows服務?

我記得在VS 2003中,當我按下播放它開始服務並停止停止它。有什麼辦法,當我按下播放或啓動該Windows服務項目時,我可以擁有相同的功能。

我目前所做的是使用installutil安裝它們,並且當我定義了一個編譯變量並且在使用服務管理器時它向我顯示窗口時,我將一個預處理器命令與System.Diagnostics.Debug.Launch()選擇調試器。這種方法仍然有些麻煩。

對於閱讀此內容的其他人,請記得嘗試一次調試一個線程。

回答

1

我通常會允許使用IDE中的命令行參數設置傳遞給我的服務的命令行開關。當這個開關打開時,我可以運行我的服務作爲一個普通的應用程序。這裏唯一的問題是,您需要記住,服務通常在具有受限權限的帳戶下運行,因此,在訪問受保護的資源時,作爲用戶上下文中的應用程序進行調試的行爲可能會有所不同。以下是示例代碼:

static void Main() 
{ 
    if (IsDebugMode()) 
    { 
     MyService svc = new MyService(); 
     svc.DebugStart(); 

     bool bContinue = true; 
     MSG msg = new MSG(); 

      // process the message loop so that any Windows messages related to 
      // COM or hidden windows get processed. 
     while (bContinue && GetMessage(out msg, IntPtr.Zero, 0, 0) > 0) 
     { 
      if (msg.message != WM_QUIT) 
       DispatchMessage(ref msg); 
      else 
       bContinue = false; 
     } 
    } 
    else 
    { 
     ServiceBase.Run(new MyService()); 
    } 
} 

public void DebugStart() 
{ 
this.OnStart(null); 
} 

static bool IsDebugMode() 
{ 
    return (System.Environment.CommandLine.IndexOf("debug") > -1); 
}