こんにちはハブラ Windowsサービスを作成したことがないが、突然必要になった場合、これは
あなたのための小さな投稿。
なぜこれだけなのですか?
サービスの作成を開始した場合、サービスのデバッグに関して疑問が生じます。 インターネットでは、ほとんどの場合
、デバッガーを既に実行中のサービスプロセスに
接続する方法に関する記事を書い
ています 。 なぜなら サービスは通常のWindowsプロセスではありません。VisualStudioから開始することはできません。
サービスのインストール
開始しようとすると、おそらくサービスを開始できないというメッセージが表示され、
installutil.exe
を使用してインストールする必要があります。

サービスをインストールするには、パスに沿ってあるVisual Studioコンソールが必要です。
→ → Visual Studio 2008 → Visual Studio Tools → Visual Studio 2008 Command Prompt
(VSによってインストールされたバージョンによって、パスは異なる場合があります)
コンソールを起動した後、サービスが
Debug
モードになっているディレクトリに移動してインストールします。
installutil.exe /i < >
installutil.exe
不要になります。 便宜上、Windowsサービス管理コンソールを起動します。
services.msc
これで、Visual Studioコンソールを閉じることができます。
最も興味深いものに渡します:-)
サービスのデバッグ
メソッド番号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に感謝します:-)