Possiedo un progetto destinato a versioni precedenti di .NET framework (.NET 4.5.2). Ho installato Visual Studio 2015 (e quindi .NET 4.6 sulla mia macchina). Ho notato che se utilizzo le funzionalità del linguaggio C# rilasciate in .NET 4.6/C# 6, vengono comunque compilate. Se il framework di destinazione del mio progetto è < NET 4.6, non deve questo non compilare:Perché il codice specifico di .NET 4.6 viene compilato quando si targetizzano versioni precedenti del framework?
public string MyExpressionBodyProperty => "1";
//auto properties are new in C# 6
public string MyAutoProperty { get; } = "1";
private static void MethodThatUsesNameOf(string filename)
{
if (filename == null)
{
//nameof was released in C# 6
throw new ArgumentException("The file does not exist.", nameof(filename));
}
}
Come posso assicurarmi che sto utilizzando solo funzionalità del linguaggio .NET che funzionano con la versione quadro ho scelto come target?
Un'altra opzione è quella di passare a C# versione 5 in Proprietà progetto - Build - Avanzate. –