2014-05-13 21 views
10

In una versione precedente (Roslyn CTP), stavo usando seguente codice per formattare il mio codice generato e che stava lavorando benissimo:Formattazione del codice a Roslyn SDK Anteprima

SyntaxNode.Format(FormattingOptions.GetDefaultOptions()).GetFormattedRoot() 

Con la nuova versione Roslyn non è più cosa fa, quindi qual è l'equivalente per il codice sopra nella nuova versione (Anteprima SDK)?

risposta

8

È possibile formattare SyntaxNodes utilizzando il Microsoft.CodeAnalysis.Formatting.Formatter come questo (se si dispone di uno spazio di lavoro):

using Microsoft.CodeAnalysis.Formatting; 

var formattedResult = Formatter.Format(syntaxNode, workspace); 

EDIT: Come Jeroen ha scritto in un commento, se non si dispone di uno spazio di lavoro e don' t bisogno di impostazioni di formattazione specifici dell'area di lavoro, si può semplicemente creare uno:

var workspace = MSBuildWorkspace.Create(); 
+0

Non ho oggetto di lavoro :( –

+2

Si può semplicemente utilizzare 'MSBuildWorkspace.create()' per formattare con le impostazioni standard. È necessario solo l'area di lavoro rilevante se si desidera area di lavoro impostazioni di formattazione specifici. –

+1

Grazie così . molto andyp e Jeroen per la risposta rapida sto usando seguente codice: var spazio di lavoro = MSBuildWorkspace.Create(); var newSyntaxNode = Formatter.Format (syntaxNode, spazio di lavoro); Ma ottenere seguente errore: Una prima eccezione di possibilità di tipo "System.NotSupportedException" si è verificato in Microsoft.CodeAnalysis.Workspaces.dll Ulteriori informazioni: La lingua "C#" non è supportata. –

1

Roslyn è cambiato un bel po 'dal momento che il CTP.

La documentazione è ora qui: https://roslyn.codeplex.com/

seguire il link per https://roslyn.codeplex.com/documentation, clicca su "Campioni e scenari", quindi aprire la soluzione demo "FormatSolution - un'applicazione console che formatta tutti i file C# e sorgente VB in un soluzione.".

Purtroppo, non penso che sia possibile ottenere rapidamente la formattazione più funzionante, poiché è necessario aggiungere il codice a una nuova soluzione.

Problemi correlati