Compartir a través de


Error del compilador CS1617

Opción 'option' no válida para LangVersion. Use ? para enumerar los valores admitidos.

Este error se produce si usó la configuración de proyecto o el modificador de la línea de comandos LangVersion, pero no especificó una opción de lenguaje válida. Para resolver este error, compruebe la sintaxis de línea de comandos o la configuración de proyecto, y cambie a una de las opciones enumeradas.

Por ejemplo, al compilar con csc -langversion:ISO se generará el error CS1617.

Cómo enumerar las versiones de idioma admitidas

Para ver una lista de versiones de idioma compatibles, haga referencia a la tabla de este artículo, compile con -langversion:?o establezca <LangVersion>?</LangVersion> temporalmente en el archivo de proyecto antes de compilar.

La manera más confiable de ver las versiones de idioma compatibles es consultar la tabla de referencia al final de este artículo, que enumera todas las versiones de idioma admitidas actualmente.

Uso del compilador de C# directamente

Use la -langversion:? opción con el compilador de C#. Debe encontrar la ruta de acceso a csc.dll en la instalación del SDK de .NET:

dotnet exec "/path/to/dotnet/sdk/version/Roslyn/bincore/csc.dll" -langversion:?

Por ejemplo, en Linux con el SDK de .NET 8:

dotnet exec "/usr/lib/dotnet/sdk/8.0.117/Roslyn/bincore/csc.dll" -langversion:?

La ruta de acceso exacta varía en función del sistema operativo y la versión del SDK de .NET.

Puede establecer <LangVersion>?</LangVersion> temporalmente en el archivo de proyecto y compilar con verbosidad de diagnóstico.

dotnet build -v diagnostic

Busque la línea "Versiones de idioma compatibles:" en la salida.

Advertencia

Si se establece <LangVersion>?</LangVersion> en un archivo de proyecto, se producirá un error en la compilación después de mostrar las versiones admitidas. Esto se debe a que el compilador sale después de enumerar las versiones en lugar de seguir compilando el código. Quite esta configuración después de ver la lista.

Valores válidos para -langversion

Los valores válidos para las versiones de lenguaje dependen de la versión de .NET que se use. Consulte las reglas de versión de lenguaje para obtener más información sobre qué versión de lenguaje está disponible con qué versión de .NET. Si recibe este error al intentar usar una versión de lenguaje más reciente, puede cambiar a una versión de lenguaje inferior o actualizar el SDK de .NET a una versión que admita la versión del lenguaje.

En la tabla siguiente se especifican los valores válidos actuales para -langversion:

Valor Significado
preview El compilador acepta toda la sintaxis de lenguaje válida de la última versión preliminar.
latest El compilador acepta la sintaxis de la última versión del compilador (incluida las versión secundaria).
latestMajor
o bien default
El compilador acepta la sintaxis de la versión principal más reciente del compilador.
15.0 El compilador acepta solo la sintaxis que se incluye en C# 15 o inferior.
14.0 El compilador acepta solo la sintaxis que se incluye en C# 14 o inferior.
13.0 El compilador solo acepta la sintaxis que se incluye en C# 13 o versiones anteriores.
12.0 El compilador solo acepta la sintaxis que se incluye en C# 12 o versiones anteriores.
11.0 El compilador solo acepta la sintaxis que se incluye en C# 11 o versiones anteriores.
10.0 El compilador solo acepta la sintaxis que se incluye en C# 10 o versiones anteriores.
9.0 El compilador solo acepta la sintaxis que se incluye en C# 9 o versiones anteriores.
8.0 El compilador acepta solo la sintaxis que se incluye en C# 8.0 o versiones anteriores.
7.3 El compilador acepta solo la sintaxis que se incluye en C# 7.3 o versiones anteriores.
7.2 El compilador acepta solo la sintaxis que se incluye en C# 7.2 o versiones anteriores.
7.1 El compilador acepta solo la sintaxis que se incluye en C# 7.1 o versiones anteriores.
7 El compilador acepta solo la sintaxis que se incluye en C# 7.0 o versiones anteriores.
6 El compilador acepta solo la sintaxis que se incluye en C# 6.0 o versiones anteriores.
5 El compilador acepta solo la sintaxis que se incluye en C# 5.0 o versiones anteriores.
4 El compilador acepta solo la sintaxis que se incluye en C# 4.0 o versiones anteriores.
3 El compilador acepta solo la sintaxis que se incluye en C# 3.0 o versiones anteriores.
ISO-2
o bien 2
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2006 C# (2.0).
ISO-1
o bien 1
El compilador acepta solo la sintaxis que se incluye en ISO/IEC 23270:2003 C# (1.0/1.2).