2012-03-15 5 views
1

私はビジュアルスタジオ2010アドインを構築していて、ソリューションがロードされたときにイベントにフックしようとしています。SolutionStats for Visual studio 2010 addinが起動しない

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) 
{ 
    applicationObject = (DTE2)application; 
    var outputWindow = (OutputWindow)applicationObject.Windows.Item(Constants.vsWindowKindOutput).Object; 
    outputWindowPane = outputWindow.OutputWindowPanes.Add("My Pane"); 
    applicationObject.Events.SolutionEvents.Opened += SolutionEventsOnOpened; 
    outputWindowPane.OutputString("Connected"); 
} 

private void SolutionEventsOnOpened() 
{ 
    outputWindowPane.OutputString("SolutionEventsOnOpened"); 
} 

outputed唯一のものは「ある:私が見つけた基本的にはどのような

はSolutionEvents.Openedが動作していないようですがOnConnectionにでそれを聞いて、私が探しているものをあるように思わということです接続された "。

私はSolutionItemsEvents.ItemAddedとSolutionEvents.ProjectAddedを聴こうとしましたが、それらは起動しません。

他の場所でイベントを初期化する必要がありますか? (私はおそらく問題を引き起こすことがknowedされ、R#がインストールされています?)

答えて

3

はここに解決策が見つかり:基本的にhttp://blogs.microsoft.co.il/blogs/kolbis/archive/2007/11/22/hooking-up-to-the-solution-events.aspx

は、あなたがあなたのアドインクラスのスコープSolutionEventsとイベントのためにメンバーを宣言する必要がありますがそれらを割り当て、それを通してイベントハンドラを参照します。例えば。

m_application = Application as DTE2; 

    m_events = (Events2)m_application.Events; 
    m_solutionEvents = m_events.SolutionEvents; 

と、次のように最終的には、ワイヤーアップソリューションは、イベントをAfterClosing /オープン:

m_solutionEvents.Opened += m_openSolution; 
    m_solutionEvents.AfterClosing += m_closeSolution; 

private Events2 m_events; 
    private SolutionEvents m_solutionEvents; 

は、OnConnectionにハンドラ(プラグインが初期化されます)でこれを行います

その後、イベントが発生します。

これは、Events/SolutionEventsオブジェクトが変更されたりGC'd(またはその両方)されてしまうためです。

HTH

関連する問題