¿Qué versión de C# estoy usando?
Quiero saber qué versión de C# estoy usando. Si usara Python, haría algo como python -V
desde la línea de comando o escribiría:
import sys
print sys.version
En PHP haría algo como esto: phpinfo();
en java:java -version
Pero no pude encontrar cómo lograr esto en C#.
Esta pregunta no la responde, aunque el nombre sugiere que debería hacerlo.
Entendí que depende del marco .NET, pero ¿existe alguna forma programática de determinar mi marco? Me refiero a sin ir al directorio y comprobar el nombre de mis carpetas .NET.
Depende del .NET Framework
que uses. Consulte la respuesta de Jon Skeet sobre Versiones.
Aquí hay una versión corta de su respuesta.
C# 1.0 lanzado con .NET 1.0
C# 1.2 (por extraño que parezca); lanzado con .NET 1.1
C# 2.0 lanzado con .NET 2.0
C# 3.0 lanzado con .NET 3.5
C# 4.0 lanzado con .NET 4
C# 5.0 lanzado con .NET 4.5
C# 6.0 lanzado con .NET 4.6
C# 7.0 lanzado con .NET 4.6.2
C# 7.3 lanzado con .NET 4.7.2
C# 8.0 lanzado con NET Core 3.0
C# 9.0 lanzado con NET 5.0
C# 10.0 lanzado con NET 6.0
C# 11.0 lanzado con NET 7.0
C# 12.0 lanzado con NET 8.0
Si bien esto no responde a su pregunta directamente, lo pongo aquí porque Google mostró esta página primero en mis búsquedas cuando buscaba esta información.
Si está utilizando Visual Studio , puede hacer clic derecho en su proyecto -> Propiedades -> Construir -> Avanzado. Esto debería enumerar las versiones disponibles, así como la que está usando su proyecto.
No puede averiguar qué versión de lenguaje C# utilizó el compilador para producir el ensamblado y, por lo tanto, no hay ningún código que pueda escribir para detectarlo en tiempo de ejecución.
En el momento de la compilación, la versión de C# se define configurando el archivo de proyecto para el proyecto (se puede ver en la configuración VS del proyecto como se muestra en otra respuesta ) y el cambio explícito o implícito se pasa al compilador si se compila directamente con CSC ( ¿Cómo le digo al ¿Compilador Roslyn C# para usar una versión específica de .NET? )
La única versión que puede obtener en tiempo de ejecución es la versión del marco; mire la versión de uno de los ensamblajes principales, es decir
Console.Write(typeof(string).Assembly.ImageRuntimeVersion);
Obtener la versión del compilador de C# es algo más difícil, pero debería poder adivinar la versión comprobando qué versión del marco se utiliza.
Si está utilizando el compilador de línea de comandos (csc.exe), puede consultar la ayuda para ver la versión del compilador (también necesitará conocer la versión de Framework de todos modos):
C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /?
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Tenga en cuenta que cada versión del compilador puede apuntar a todas las versiones anteriores de C#; siguiendo el comando del compilador de Roslyn que informa las versiones 1-11 de C# compatibles:
"C:\Program Files\Microsoft Visual
Studio\2022\Preview\MSBuild\Current\Bin\Roslyn\csc.exe" /langversion:?