2012-10-10 6 views
7

Devo fornire funzionalità di scripting all'interno della mia applicazione, consentendo ai clienti di estendere le sue funzionalità utilizzando il nostro modello a oggetti. Speravo di offrire una sorta di editor C#/VB.Net integrato con intellisense, ma dopo aver visto prodotti come AvalonEdit e ScintillaNet, non sembrano fornire un vero completamento del codice, solo un'API in cui è possibile fornire il proprio elenco di elementi da visualizzare nell'elenco di completamento automatico popup.Editor C#/VB.Net integrato con intellisense - Roslyn, VSTA o qualcos'altro?

Mi chiedevo quindi se Roslyn ha fornito tali funzionalità? Dalle esercitazioni e dagli esempi che ho trovato, sembra che Roslyn sia davvero solo un servizio di compilazione.

Come ultima risorsa, i clienti possono utilizzare qualcosa come VS Express ma un editor integrato è ovviamente un po 'più bello.

(Ho trovato anche Visual Studio Tools for Applications, che sembrava promettente, tuttavia le risorse online hanno diversi anni e la documentazione/le esercitazioni sono inesistenti, quindi ho disegnato uno spazio vuoto con questo.

+0

È possibile trovare questa domanda utile: http://stackoverflow.com/questions/939841/what-is-the-visual-studio-shell-standalone-shell-good-for –

risposta

3

Sono ceretainly non un esperto in questo settore. Ma dal momento che non hai ricevuto altre risposte, farò un tentativo.

Penso che la risposta breve sia "sì".

Guardando il codice in AvalonEdit e SharpDevelop, sembra che il completamento del codice sia una delle parti più difficili. Essenzialmente, devi scrivere un compilatore (o un parser, comunque) per capire quali elementi dovrebbero essere nella lista di completamento. Sembra che Roslyn fornisca strumenti per la costruzione dell'elenco di completamento. Nelle versioni precedenti, questi strumenti erano legati all'editor VS, ma ho visto affermazioni che dicevano che sono indipendenti nell'ultima versione. Se è così, questi strumenti saranno molto utili nell'implementazione del completamento del codice.

Non ho affatto esaminato i dettagli, ma intendo, poiché ho alcuni degli stessi obiettivi che hai, e Roslyn sembra che sarà utile (basato su ciò che so finora, che non è molto).

2

Hai fatto un'affermazione molto interessante: "dopo aver esaminato prodotti come AvalonEdit, SharpDevelop e ScintillaNet, non sembrano fornire un vero intellisense per il completamento del codice". SharpDevelop è un IDE completo e perché non trovi il completamento del codice "vero" Intellisense? Dovrai fornire delle prove o questa dichiarazione non è valida.

Che cosa si vuole raggiungere può essere raggiunto solo con due pezzi importanti di componenti,

  • Un parser lingua, con il quale è possibile ottenere contesto ed elementi per il completamento del codice. Questo è ciò che Roslyn offre, ma Roslyn non è ancora abbastanza maturo per analizzare tutta la sintassi C# esistente. SharpDevelop (così come MonoDevelop) usa NRefactory, che serve lo stesso obiettivo.

  • Un elemento dell'interfaccia utente che supporta l'evidenziazione della sintassi. Questo può essere ottenuto da AvalonEdit o ScintillaNet in base alla struttura dell'interfaccia utente scelta.

Visual Studio Shell potrebbe fornire assistenza, come ha sottolineato @Mystere Man. Ma personalmente non ne so molto.

+0

Ho pensato la stessa cosa: non sono a conoscenza di eventuali mancanze nel completamento del codice in SharpDevelop. – bubba

+0

Questo potrebbe essere utile: http://social.msdn.microsoft.com/Forums/en-US/roslyn/thread/78e6f820-8f9f-4da9-8a47-d46f846b0a11 – bubba

+0

Grazie per la risposta e le scuse - Ho erroneamente menzionato SharpDevelop e ora lo hanno rimosso. –

0

Ho provato davvero a usare uno di quei componenti integrati, ma ho finito per implementarne uno io stesso. Dopo un giorno esplorando l'API RichTextBox, puoi creare questo supporto in tutta comodità.Basta giocare con PreviewKeyDown/Up, assicurarsi che un lotto di lavoro giochi con il supporto di annullamento e così via.