VS ma teraz interaktywne okno, ale w przeciwieństwie do uruchamiania surowego procesu CSI.EXE Roslyn, Visual Studio dodaje IntelliSense i kilka innych funkcji, takich jak możliwość załadowania do bieżącego projektu.Śledzenie zmian w interaktywnym oknie C#
Chcę napisać wtyczkę VS, która śledzi wszystkie zmiany edytora tekstu w tym oknie. czy to możliwe? Czego szukam to coś podobnego do zdarzeń WPF PreviewKeyDown/PreviewTextInput
. Czy mogę uzyskać te w interaktywnym oknie C#, a jeśli tak, w jaki sposób?
Oto jak daleko mam do tej pory:
var dte = Shell.Instance.GetComponent<DTE>();
foreach (Window window in dte.MainWindow.Collection)
{
if (window.Kind.ToUpper().Contains("TOOL"))
{
if (window.Caption == "C# Interactive")
{
WpfWindow wpfWindow = (WpfWindow)HwndSource.FromHwnd((IntPtr) window.HWnd).RootVisual;
for (int i = 0; i < VTH.GetChildrenCount(wpfWindow); ++i)
{
// now what?
}
}
}
}
Meh, inny przypadek * jego nieudokumentowanego *, dosłownie nie ma dokumentacji dotyczącej używania 'EnvDTE Interactive': https://docs.microsoft. com/en-us/dotnet/api/envdte.outputwindow.dte? view = visualstudiosdk-2017 –
Szukasz IWpfTextViewHost z interaktywnego okna C#? Czy to byłoby dla ciebie w porządku? –
@SimonMourier nie jest pewien. Potrzebuję konkretnej kontroli, która może 1) dać mi cały bufor i 2) powiadomić o wszelkich zmianach. w zasadzie muszę śledzić każdą zmianę w oknie interaktywnym. –