Come può un programma C# rilevare che viene compilato con una versione di C# che non contiene il supporto per le funzionalità del linguaggio utilizzate in quel programma?Come si può compilare il codice C# per richiedere un determinato linguaggio o versione del compilatore?
Il compilatore C# rifiuterà il programma e produrrà alcuni messaggi di errore, incontrando le caratteristiche del linguaggio che non supporta. Questo non risolve il problema, che è quello di indicare che il programma è compilato con una vecchia versione del compilatore C#, o un compilatore C# che non supporta la versione richiesta di C#
Idealmente, sarebbe come semplice come
#if CS_VERSION < 3
#error CSharp 3 or later is required
#end
Il contesto di questo è la compilazione del codice C# generato dalla macchina, tramite i compilatori della riga di comando, rotto con una varietà di errori perché il compilatore C# precedente (.NET 2005) è stato prelevato sul percorso prima della versione corrente (.NET 2008), e non era immediatamente ovvio che il bug non fosse nel generatore del codice C#. – grrussel
Okay - questi compilatori vengono eseguiti in una sorta di script? Se è così, è qui che il file RequiredFeatures.cs sarebbe utile. –
È possibile evidenziare la caratteristica specifica 4.0 a cui si fa riferimento? In che modo è diverso da/langVersion? Sarei interessato a vedere che cosa fa con l'esempio che ho dato qui sotto ... –