Qualcuno sa di un'utilità per il preprocesso di un file sorgente C# senza compilarlo, in modo simile all'utilizzo del flag -E in GCC? Ho provato ad utilizzare il GCC - elabora con successo #if
direttive, ma soffoca su qualsiasi #region
direttive ...Esiste uno strumento di preelaborazione C#?
Idealmente, mi piacerebbe essere in grado di eseguire lo strumento su un file con estensione cs per rimuovere eventuali blocchi che valutano #if
a falso, e opzionalmente essere in grado di segnalare se rimuovere/lasciare commenti intatti, #region
, #pragma
direttive ecc.
Per mettere questo contesto, voglio essere in grado di pubblicare un codice sorgente che fa parte di un (molto) progetto più ampio, rimuovendo parti che sono rilevanti solo per il progetto più ampio. Per fare un esempio, ci sono pezzi di codice che assomigliano a questo:
#if (SUBPROJECT)
namespace SubProject
#else
namespace CompleteProject
#endif
{
public class SomeClass()
{
#if (!SUBPROJECT)
// This might call a method contained in an assembly that potentially
// won't be available to the sub-project, or maybe a method that hooks
// into a C library via P/Invoke...
string result = CallSomeCleverMethod();
#else
// This might call a method that performs a simplified version of the
// above, but does so without the above's assembly or P/Invoke
// dependencies...
string result = CallSomeSimpleMethod();
#endif
}
}
prega ricordo io non sto cercando di fare costruisce qui - questo è puramente sulla pubblicazione di solo un sottoinsieme del codice sorgente di un progetto più ampio.
Qualsiasi idea/aiuto apprezzato.
Dove posso ottenere l'eseguibile? – NightOwl888
Fa parte della raccolta del compilatore GNU - probabilmente è già installato se stai usando OS X o Linux. Se stai usando Windows, MinGW è probabilmente quello di cui hai bisogno. –
Ne ho trovato uno che funziona qui: http://mcpp.sourceforge.net/download.html, ma l'eseguibile è mccp piuttosto che cpp. – NightOwl888