Domanda

Quello che voglio fare è leggere il codice C #, analizzarlo, inserire alcune chiamate di metodo e compilarlo alla fine.

E 'possibile convertire il codice sorgente C # (una lista di stringhe) per gli oggetti CodeDOM?

È stato utile?

Soluzione

Non è direttamente possibile farlo con il nucleo NET Framework. È necessario utilizzare terzi o add-on strumenti, ad esempio:

Altri suggerimenti

Questa è una domanda molto vecchio, ma vale la pena notare che la risposta accettata non è più applicabile. recente href="https://github.com/dotnet/roslyn" progetto Roslyn è esplicitamente rivolto a esporre tutte le conoscenze i guadagni del compilatore circa la vostra base di codice in fase di staticamente analizzarla, e di esporre tutte queste informazioni tramite le API gestite per voi da sfruttare. E 'disponibile sia per VB e C #.

Dal momento che si desidera consumare informazioni analisi statica, è necessario il Microsoft.CodeAnalysis NuGet pacchetto (la roba che serve per C # è sotto il namespace Microsoft.CodeAnalysis.CSharp) e un po 'di tempo al campioni e procedure dettagliate nella documentazione.

Linq su C # . E 'meraviglioso.

Se si desidera che la capacità di analizzare ed eseguire analisi arbitrarie e le trasformazioni in codice sorgente C # (o una varietà di altre lingue), controllare il nostro Il DMS Software Reengineering Toolkit.

DMS ha un C # front end completa, costruisce completi albero sintattico astratto per il codice analizzata (ma non una CodeDom), fornisce un'API procedurale completo per camminare / verifica / modifica delle AST. Dopo rivedere l'albero, DMS può rigenerare il codice sorgente corrispondente all'albero modificati, sia nella modalità fedeltà in cui viene mantenuta la spaziatura originale, o la modalità prettyprint quando esso applica una stile prettyprint che è possibile controllare completamente. I commenti sono mantenuti nella fonte rigenerata correttamente.

Inoltre, DMS fornisce modello a livello sorgente di corrispondenza e di trasformazione (ad esempio, si può scrivere "x = x + 1 ==> x ++" invece di codificare tutti i walk-around-tree-to-verifica, incidere l'albero per cambiare). Vedere interessante resoconto sulle trasformazioni del programma di capire che cosa il motivo per cui questo è un molto meno lavoro ..

Il CSharpCodeProvider potrebbe essere quello che' re cercando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top