なぜこれだけなのですか?
サービスの作成を開始した場合、サービスのデバッグに関して疑問が生じます。 インターネットでは、ほとんどの場合、デバッガーを既に実行中のサービスプロセスに接続する方法に関する記事を書いています 。 なぜなら サービスは通常のWindowsプロセスではありません。VisualStudioから開始することはできません。
サービスのインストール
開始しようとすると、おそらくサービスを開始できないというメッセージが表示され、
installutil.exe
を使用してインストールする必要があります。
サービスをインストールするには、パスに沿ってあるVisual Studioコンソールが必要です。
(VSによってインストールされたバージョンによって、パスは異なる場合があります)→ → Visual Studio 2008 → Visual Studio Tools → Visual Studio 2008 Command Prompt
コンソールを起動した後、サービスが
Debug
モードになっているディレクトリに移動してインストールします。
installutil.exe /i < >
installutil.exe
不要になります。 便宜上、Windowsサービス管理コンソールを起動します。
これで、Visual Studioコンソールを閉じることができます。services.msc
最も興味深いものに渡します:-)
サービスのデバッグ
メソッド番号1(デバッガーの接続)
- Windowsサービス管理コンソールを使用してサービスを開始します。
- Visual Studioで、選択します
Tools → Connect To Process
Attach
]ボタンをクリックします
この方法には欠点があります。追加のトリックがなければ、
OnStart
ハンドラーにあるコードをデバッグすることはできません。
メソッド番号2(ソースコードからデバッガーを接続する)
program.cs
モジュール
program.cs
で、
Main()
メソッドの開始直後に、以下を追加します。
#if DEBUG
System.Diagnostics. Debugger .Launch();
#endif
このコードは、デバッガーをプロセスに接続し、
DEBUG
モードでのみコンパイルします。 ここで、サービスをデバッグするには、Visual Studioからではなく、サービスコントロールコンソール(または
net start
コマンド)を使用してサービスを開始する必要があります。 起動直後に、デバッガを選択するためのダイアログボックスが表示されます。
Visual Studioの実行中のインスタンスを選択し、[
Yes
]をクリックしてデバッグをお楽しみください!
メソッド番号3(コマンドラインパラメーターで開始)
gwynbleiddにより提案
別の方法があります-コンソールアプリケーションとしてサービスを開始する機能を提供する。 たとえば、コマンドラインで/ consoleを渡し、このフラグが設定されている場合は、アプリケーションをコンソールとして起動し、そうでない場合はサービスとして起動します。
このアプローチの利点:
実際、通常のコンソールアプリケーションのようにデバッグするのは非常に簡単です。 デバッグ情報をコンソールに出力できます
テキストのデバッグを手伝ってくれたkomrに感謝します:-)