2012-04-25 8 views
2

VS2010 SP1を使用すると、Windowsサービスが作成されます。今私はそれをインストールすることなくそれをデバッグしたい。私はVS 2010でWindowsサービスをデバッグすることが期待しかし、VSには、以下のコード行は、灰色を示しプリプロセッサディレクティブを使用してVisual StudioでWindowsServiceをデバッグする#if

#if (DEBUG) 
      ControllerNTService service =new ControllerNTService(); 
      Console.ReadLine(); 
#else 
      System.ServiceProcess.ServiceBase[] ServicesToRun; 
      ServicesToRun = new System.ServiceProcess.ServiceBase[] { new ControllerNTService() }; 
      System.ServiceProcess.ServiceBase.Run(ServicesToRun); 
#endif 

:以下のようにだから私はProgram.csのメインメソッドのコードを記述します。グレイコードが無効であることを意味します、そうですか? コードが有効であれば、私は私がそれらに実行することができると思う

ControllerNTService service =new ControllerNTService(); Console.ReadLine();

(2行はグレーで表示されます)。

上記のコードを使用して、F5キーを押してデバッグすると、デバッグできないことがわかります。まずサービスをインストールする必要があります。

誰かが私を誘導するために同様の問題に遭遇したことを願っています。 良い一生を持ってください

答えて

1

あなたのプロジェクトのアクティブなビルド構成をチェックする必要があります。それは "DEBUG"に設定する必要があります。 (あなたが記述したものによって "RELEASE"に設定されていると思います)

メニュービルド - >コンフィグレーションマネージャを使用してアクティブなビルド設定を変更できます。 - >ダイアログでアクティブソリューションコンフィグレーションを "デバッグ"に設定します。

サービスをコマンドラインから起動する場合は、起動する必要があります。したがって、あなたは、あなたがサービスインスタンスの開始を呼び出す必要があり、あなたのmainメソッドでは、インスタンス

public class ControllerNTService{ 
    // additional service code 

    internal void Start(string[] args) { 
    base.OnStart(args); 
    } 

    internal void Stop() { 
    base.OnStop(); 
    } 
} 

上のOnStart保護されたメソッドを呼び出して、あなたのControllerNTServiceへのStartメソッドを追加する必要があります。

開始に加えて、サービスを停止する方法(プロクトメソッドOnStopを呼び出す方法)を提供することもお勧めします。このメソッドは、サービスを停止するためにConsole.ReadLineの後に呼び出されます。

+0

ご返信ありがとうございます。実際、私は自分のプロジェクトを「デバッグ」モデルとして設定していました。私はF5キーを押してデバッグするとき、VSは "コマンドラインまたはデバッガからサービスを開始できません"というメッセージが表示されます。まず、Windowsサービスをインストールする必要がありますinstallutil.exe).... "と表示されます。もう1つは#if #elseのコードが灰色で表示されていることです。コードが無効であることを意味します。 –

関連する問題