6

私がWindows8をインストールした後、このような完全に正当なステートメントはもう機能しません:

#if DEBUG
    Debugger.Launch();
#endif

サービスはそのことを無視し始めます。はい、デバッグモードでプロジェクトをビルドしています。

これを-に変更するとDebugger.Break()、サービスは失敗しますが、デバッガーを接続するためのダイアログは表示されません。

4

3 に答える 3

6

Debugger.Launchビジュアル GUI でアプリケーションを起動します。デフォルトでは、サービスはデスクトップと対話しないため、サービスが行うことは「表示」できません。

デスクトップと対話するためのサポートは、Windows サービスから徐々に削除されました (たとえば、「デスクトップと対話する」オプションは一部のサーバー バージョンから削除されました)。彼らはこの傾向を続けてきたと思います。

Windows サービスは本質的に GUI アプリケーションではなく、ユーザーがデスクトップにログインする前後に実行できるため、常にGUI を表示することはできません。サービスで GUI を持つ機能に依存することは、一般的には良い考えではありません。

サービスのデバッグが必要な場合は、通常のアプリケーションとして実行して、Launch や Debug などを実行できるようにすることをお勧めします。恥知らずなプラグイン:それをサポートするサービスを作成する方法については、Visual Studio での Windows サービスの開発をご覧ください。

于 2012-09-04T15:47:37.967 に答える
0

これは Windows ストア アプリですか、それともデスクトップ アプリですか?

プロジェクト (C# 実行可能プロジェクトがある場合) を右クリックし、[プロパティ] を選択してみてください。次に、オプションの左側のサイドバーで、[デバッグ] をクリックします。[アクションの開始] セクションで、[起動しないで、起動時にコードをデバッグする] チェックボックスをオンにします。

F5 キーを押して、コード内にブレークポイントを設定して Visual Studio を実行すると、プロセスが開始されるまで待機します。次に、(Visual Studio の外部で) アプリケーションを実行すると、Visual Studio がデバッガーをアタッチします。

プロパティの起動しないオプション

于 2012-08-30T12:18:19.820 に答える