2017-09-24 127 views
5

Visual Studio Uzantım, IVsSolutionEvents.OnAfterOpenSolution() aracılığıyla bir çözümün açılmasına yanıt veriyor.Bir Visual Studio Uzantısında, "Açık Klasör" ve "Açık Çözüm" seçeneklerine nasıl yanıt verilir?

Visual Studio 2017, "Open Solution" yerine bir alternatif olarak "Open Folder"'u kullanıma sunmuştur, ancak bir klasörü açtığınızda, IVsSolutionEvents.OnAfterOpenSolution() başlatılamıyor. (IVsSolutionEvents'daki diğer olaylardan herhangi biri, ne de IVsSolutionLoadEvents'daki olaylardan herhangi birini yapın.)

Uzantıma göre bir Klasör açıldığında uzantım nasıl bilinir?

+0

IVsSolutionEvents7 :: OnAfterOpenFolder'ı mı arıyorsunuz? https://docs.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.shell.interop.ivssolutionevents7?view=visualstudiosdk-2017 –

+0

@SimonMourier: Mükemmel görünüyor, ancak uygularken ve uygulamamı geçtiğimde IVsSolution.AdviseSolutionEvents() 'nesnesine 'IVsSolutionEvents7' olaylarının hiçbiri tetiklenmez. Nesne ayrıca 'IVsSolutionEvents' uygular ve bu olaylar ateşlenir. Herhangi bir fikir...? – RichieHindle

+0

Hayır, sanırım bu gerçekten tek yol. Bazı VS dll bu arabirimi aynen uygular (örneğin, Microsoft.VisualStudio.Shell.UI.Internal, sınıf Microsoft.VisualStudio.PlatformUI.StartPageToolWindowPane). ICustomQueryInterface'i, yalnızca bu arabirimi bile talep edip etmediğini kontrol etmek için geçici olarak uygulamayı deneyebilirsiniz. –

cevap

6

Klasör açılmıştır 2017.

bildirir dinleme istemciler o Visual Studio için eklenmiştir IVsSolutionEvents7.OnAfterOpenFolder Method kullanmak zorunda. Bu bir yerli COM arabirimi olduğundan uygulayan sınıfı sınıfı, montaj ayarlayabileceğiniz ComVisible özelliğiyle görünür COM (bir temel sınıf üzerinde, emin

public void OnAfterOpenFolder (string folderPath); 

, ayrıca yapmak zorunda , vb.).

+0

Harika - çok teşekkürler! Burada bir takip sorumlum var: https://stackoverflow.com/questions/46432488/ hangi girdiye çok değer veriyorum. – RichieHindle

+0

@SimonMourier Solution Explorer'da 'Solution View' ve 'Folder View' geçişlerini nasıl izleyeceğinizi biliyor musunuz? Uygun yöntemler ile bir arayüz var mı? –

+0

@Nightwalker - başka bir soru sormalısınız –