Visual Studio 2010→デバッグ→プロセスにアタッチコマンドを使用してWindowsサービスにアタッチしようとしています。プロセスのリストをスクロールすると、Windowsサービスがグレーアウトされ、アタッチボタンもグレーアウトされます。
サービスアカウントをローカルサービスやアカウントなどに変更しようとしましたが、グレー表示のままです。これをトラブルシューティングする方法はありますか?
私は通常同じ問題を抱えており、デバッグ起動をトリガーするブール値を構成に追加することでそれを処理します。これを呼び出すことにより、WindowsサービスプロセスにアタッチするVisual Studioデバッガーインスタンスを起動できます。
System.Diagnostics.Debugger.Launch();
すばらしいのは、コードのどこでも好きなときに呼び出すことができることです。
Visual Studio 2010の[プロセスにアタッチ]ダイアログで、下部にある[すべてのユーザーからのプロセスを表示する]および[すべてのセッションのプロセスを表示します '。
それを行うと、プロセスが2回表示されることがわかりました。1つはSystemとして実行され、もう1つはローカルWindowsログインで実行されます。理由はわかりません(これに関する入力はどれも素晴らしいことです!)が、表示されているグレー表示されていないものにアタッチすることができ、この方法でコードをステップスルーすることもできました。
2番目は、Ozzがコメントで指摘したように、servicename.vshost.exeプロセスでした。
それでも表示されない場合は、サービスが実行されていることを確認してください。場合によっては、失敗したサービスが開始され、自動的に停止することがあります。そのため、オプションへの接続に表示されません。
show processes from all users
およびshow processes in all sessions
チェックボックスを選択する必要があるだけでなく、 Select
ボタンをクリックして、Managed
コードを選択する必要もありました。
Windowsサービスをインストールしたら、開始します。次に、Visual Studioでプロセスにアタッチウィンドウ(Alt + Ctrl + P)、プロセスを見つけて選択し、ウィンドウの下部にあるAttach Buttonをクリックします。
管理者としてVisual Studioを実行していることを確認してください。実行中のサービスにアタッチするには管理者権限が必要です。
セットアップの生成方法をRELEASEからDEBUGに変更することで問題を解決しました。そして、私はいつものようにサービスをインストールして接続しました。
サービスにアタッチする権限がない場合があります。デスクトップで管理者権限を持っていますか?多くの企業は、デフォルトではこれを許可していません。おそらく環境の保護を支援するためです。