2016-01-27 11 views
5

Visual Studioからコードを実行しているときにコードを停止したときにコードを実行する可能性はありますか?Visual Studioでの対応停止

私はCefGlueライブラリを使用してWinFormsアプリケーションを構築していますが、コンテンツが開かれていない2つのウィンドウから、例外からストップボタンまでの範囲に問題があることを認識しています。別のプロセスがバックグラウンドで実行され続けます。 Cefを止めるためには、私はexectueを行う必要がありますCefRuntime.Shutdown();これはCefGlueに問題があるので、Visual Studioのホスティングプロセスでアプリケーションを実行しない可能性があります(this参照)。これは生産には影響しませんが、開発とテストでは厄介ですが、問題を解決するためのコードをいくつか実行したいと思います。

私はこれが可能ではないと思うだろうが、それが知っていれば面白かっただろう。

開発中に停止ボタンを押したときにVisual Studioがアプリケーションを停止しているときに、コードを実行する方法を探しています。

注:私は、Visual Studio 2013および2015

編集 を使用しています問題は、コードの非常に数行と再現性ではありません。それでも、私は単純な例を作成しようとしましたhere

+0

どのようなアプリケーションを構築していますか? – MikeS159

+0

私はWinFormsアプリケーションをビルドしています。 – Sjoerd222888

+1

私は、プログラムが正しく終了する前にすべてのスレッドをクリアするフォームクローズイベントが必要だと言っていましたが、Visual Studioでこれを停止したときには呼び出されません。私はVSが前にプログラムの一部を閉じることができないことに遭遇していない。実行し続けるプロセスが設定されているコードを投稿できますか? – MikeS159

答えて

1

あなたの基本的に探しているのは、Visual Studio SDKを使用したソリューションです。

IDTExtensibility interfaceを実装すると、独自のアドインを構築できます。

OnConnection関数では、さまざまなイベントをサブスクライブすることができます。 (DTE2)applicationを使用すると、VSからa lot of thingsにアクセスできます。

Events propertyから入手できるイベントの一部を購読する必要があります。

あなたのソリューションに最適なイベントを見つける必要があります。しかし、DebuggerEventsは良い場所のように思えます。

これを使用するには、いくつかの調査が必要です。簡単な解決法が存在する可能性があります。 OnConnectionための簡単な例として

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) 
{ 
    var applicationObject = (DTE2)application; 

    var events = _applicationObject.Events; 
    var buildEvents = (BuildEvents)events.BuildEvents; 
    buildEvents.OnBuildBegin += new _dispBuildEvents_OnBuildBeginEventHandler(OnBuildBegin); 
} 

ビルドが開始されたときにこれがトリガされます。利用可能なドキュメントはあまり良くありませんので、必要なものを見つける前に試行錯誤が必要です。

関連する問題