2012-10-10 11 views
7

Muszę zapewnić obsługę skryptów w mojej aplikacji, umożliwiając klientom rozszerzenie jej funkcjonalności za pomocą naszego modelu obiektowego. Miałem nadzieję zaoferować coś w rodzaju zintegrowanego edytora C#/VB.Net z technologią intellisense, ale po zapoznaniu się z produktami takimi jak AvalonEdit i ScintillaNet, nie wydają się one zapewniać prawdziwego uzupełniania kodu, tylko API, w którym można podać własną listę elementów do pojawienia się na rozwijanej liście autouzupełniania.Wbudowany edytor C#/VB.Net z intellisense - Roslyn, VSTA, czy coś jeszcze?

Zastanawiam się więc, czy Roslyn dostarczyła takie funkcje? Z samouczków i przykładów, z jakimi się zetknąłem, wynika, że ​​Roslyn jest tak naprawdę tylko usługą kompilatora.

W ostateczności klienci mogą używać czegoś takiego jak VS Express, ale zintegrowany edytor jest oczywiście trochę ładniejszy.

(Znalazłem również narzędzia Visual Studio Tools for Applications, które brzmiały obiecująco, jednak zasoby online mają kilka lat, a dokumentacja/tutoriale nie istnieją, więc w tym miejscu narysowałem pustkę).

+0

Można znaleźć na to pytanie przydatne: http://stackoverflow.com/questions/939841/what-is-the-visual-studio-shell-standalone-shell-good-for –

Odpowiedz

3

Nie jestem ekspertem w tej dziedzinie. Ale ponieważ nie otrzymałeś żadnych innych odpowiedzi, zrobię ci zdjęcie.

Myślę, że krótka odpowiedź brzmi "tak".

Patrząc na kod w AvalonEdit i SharpDevelop, wydaje się, że kodowanie jest jedną z najtrudniejszych części. Zasadniczo musisz napisać kompilator (lub parser), aby dowiedzieć się, jakie elementy powinny znajdować się na liście uzupełnień. Wydaje się, że Roslyn udostępnia narzędzia do konstruowania listy ukończenia. W starszych wersjach narzędzia te były powiązane z edytorem VS, ale widziałem oświadczenia, że ​​są niezależne w najnowszej wersji. Jeśli tak, narzędzia te będą bardzo przydatne przy wdrażaniu kodu.

Naprawdę nie zajrzałem do szczegółów, ale zamierzam, ponieważ mam te same cele co ty, a Roslyn wygląda na to, że będzie pomocny (na podstawie tego, co wiem do tej pory, który to niewiele).

2

Zrobiłeś bardzo interesujące stwierdzenie, że "po obejrzeniu produktów takich jak AvalonEdit, SharpDevelop i ScintillaNet, nie wydają się dostarczać prawdziwej intellisencji kodu". SharpDevelop to kompletne IDE i dlaczego nie znajdziesz "prawdziwego" uzupełnienia kodu Intellisense? Będziesz musiał przedstawić dowody lub oświadczenie jest nieważne.

Co chcesz osiągnąć można osiągnąć tylko z dwóch istotnych elementów składowych,

  • Analizator składni języka, z którego można dostać kontekst oraz elementy służące do wykonania kodu. To właśnie oferuje Roslyn, ale Roslyn nie jest jeszcze na tyle dojrzała, aby przetworzyć całą istniejącą składnię C#. SharpDevelop (jak również MonoDevelop) używa NRefactory, który służy temu samemu celowi.

  • Element interfejsu użytkownika obsługujący podświetlanie składni. Można to osiągnąć przez AvalonEdit lub ScintillaNet w oparciu o wybrane przez Ciebie środowisko interfejsu użytkownika.

Visual Studio Shell może zapewnić ci pomoc, jak zauważył @Mystere Man. Ale osobiście nie wiem zbyt wiele na ten temat.

+0

myślałem to samo rzecz - nie jestem świadomy jakichkolwiek niedociągnięć w uzupełnianiu kodu w SharpDevelop. – bubba

+0

Może to być przydatne: http://social.msdn.microsoft.com/Forums/en-US/roslyn/thread/78e6f820-8f9f-4da9-8a47-d46f846b0a11 – bubba

+0

Dzięki za odpowiedź i przeprosiny - błędnie wspomniałem SharpDevelop i teraz go usunąłem. –

0

Bardzo się starałem użyć jednego z tych wbudowanych komponentów, ale sam wykonałem je. Po całym dniu odkrywania interfejsu API RichTextBox możesz wygodnie budować to wsparcie.Po prostu graj za pomocą narzędzia PreviewKeyDown/Up, upewnij się, że partia pracy działa z obsługą cofania i innymi.

Powiązane problemy