2017-09-24 6 views
5

私のVisual Studio Extensionは、IVsSolutionEvents.OnAfterOpenSolution()を介してソリューションのオープンに応答します。Visual Studio Extensionでは、 "Open Folder"と "Open Solution"にどのように反応するのですか?

Visual Studio 2017は、 "Open Solution"の代わりに"Open Folder"を導入しましたが、フォルダを開くとIVsSolutionEvents.OnAfterOpenSolution()は起動しません。 (IVsSolutionEventsのイベントも、IVsSolutionLoadEventsのイベントもありません。)

解決策ではなくフォルダを開くと、内線でどのように知ることができますか?

+0

IVsSolutionEvents7 :: OnAfterOpenFolderをお探しですか? https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.shell.interop.ivssolutionevents7?view=visualstudiosdk-2017 –

+0

@SimonMourier:完璧に見えますが、実装して実装に合格するとオブジェクトを 'IVsSolution.AdviseSolutionEvents()'に設定した場合、 'IVsSolutionEvents7'イベントは発生しません。オブジェクトは 'IVsSolutionEvents'も実装し、それらのイベントは起動します。何か案は...? – RichieHindle

+0

いいえ、これは本当に唯一の方法だと思います。いくつかのVS DLLは、そのようなインターフェイスを実装しています(Microsoft.VisualStudio.Shell.UI.Internal、クラスMicrosoft.VisualStudio.PlatformUI.StartPageToolWindowPaneなど)。そのインターフェイスを要求しているかどうかを確認するために、ICustomQueryInterfaceを一時的に実装しようとすることもできます。 –

答えて

6

あなたは、フォルダが開かれたことをクライアントにリスニングのVisual Studio 2017

に通知するために追加されましたIVsSolutionEvents7.OnAfterOpenFolder Methodを使用する必要があります。

public void OnAfterOpenFolder (string folderPath); 

これは、ネイティブのCOMインターフェイスであるので、あなたも、あなたが基底クラスで、クラスに、アセンブリに設定することができますComVisible属性を通じて(実装クラスはCOM表示されていることを確認する必要があります、など)。

+0

素晴らしい - 多くのありがとう! https://stackoverflow.com/questions/46432488/ここに私はあなたの意見を非常に重視しています。 – RichieHindle

+0

@SimonMourierソリューションエクスプローラで 'ソリューションビュー'と 'フォルダビュー'を切り替える方法を知っていますか?メソッドに応じたインタフェースがあるかもしれませんか? –

+0

@ Nightwalker - 別の質問をする必要があります –

関連する問題