2017-09-24 88 views
5

我的Visual Studio Extension通過IVsSolutionEvents.OnAfterOpenSolution()響應開放的解決方案。在Visual Studio擴展中,如何響應「打開文件夾」以及「打開解決方案」?

Visual Studio 2017引入"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接口,你還必須確保實現類是COM可見(通過ComVisible屬性,你可以在大會確定,在類,在基類等)。

+0

很棒 - 非常感謝!我在這裏有一個後續問題:https://stackoverflow.com/questions/46432488/我非常重視你的輸入。 – RichieHindle

+0

@SimonMourier您是否知道如何在解決方案資源管理器中跟蹤「解決方案視圖」和「文件夾視圖」的切換?可能有與相應的方法的接口? –

+0

@Nightwalker - 你應該問另一個問題 –

相關問題