2017-09-24 9 views
5

내 Visual Studio Extension은 IVsSolutionEvents.OnAfterOpenSolution()을 통해 솔루션을 여는 것에 응답합니다.Visual Studio Extension에서 "Open Folder"및 "Open Solution"에 응답하는 방법은 무엇입니까?

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, class Microsoft.VisualStudio.PlatformUI.StartPageToolWindowPane). ICustomQueryInterface를 일시적으로 구현하여 해당 인터페이스를 요청하는지 여부를 확인할 수도 있습니다. –

답변

6

당신은 폴더가 열려 2017

알립니다 듣고 클라이언트 있음을 비주얼 스튜디오에 추가 된 IVsSolutionEvents7.OnAfterOpenFolder Method을 사용해야합니다. 이 네이티브 COM 인터페이스를하기 때문에 구현 클래스는 클래스에, 어셈블리에 설정할 수 ComVisible 속성을 통해 볼 수있는 COM (기본 클래스에 확신

public void OnAfterOpenFolder (string folderPath); 

, 당신은 또한 확인해야 , 등).

+0

Wonderful - 많은 감사합니다! 여기에 https://stackoverflow.com/questions/46432488/ 추가 질문에 대한 귀하의 의견을 매우 소중하게 생각합니다. – RichieHindle

+0

@SimonMourier 솔루션 탐색기에서 '솔루션보기'및 '폴더보기'를 통한 전환을 추적하는 방법을 알고 있습니까? 해당 메소드가있는 인터페이스가있을 수 있습니까? –

+0

@ Nightwalker - 다른 질문을해야합니다. –