Examen del archivo de configuraciones de inicio
- 11 minutos
Ya ha visto que Visual Studio Code usa el archivo launch.json para configurar el depurador. Si va a crear una aplicación de consola de C# sencilla, es probable que Visual Studio Code genere un archivo launch.json que tenga toda la información que necesita para depurar correctamente el código. Sin embargo, hay casos en los que es necesario modificar una configuración de inicio, por lo que es importante comprender los atributos de una configuración de inicio.
Atributos de una configuración de inicio
El archivo launch.json incluye una o varias configuraciones de inicio en la configurations lista. Las configuraciones de inicio usan atributos para admitir diferentes escenarios de depuración. Los atributos siguientes son obligatorios para cada configuración de inicio:
-
name: el nombre descriptivo del lector asignado a la configuración de inicio. -
type: el tipo de depurador que se va a usar para la configuración de inicio. -
request: el tipo de solicitud de la configuración de inicio.
En esta sección se definen algunos de los atributos que puede encontrar.
Nombre
El atributo name especifica el nombre visible de la configuración de lanzamiento. El valor asignado a name aparece en la lista desplegable configuraciones de inicio (en el panel de controles de la parte superior de la vista RUN AND DEBUG).
Tipo
El type atributo especifica el tipo de depurador que se va a usar para la configuración de inicio. Un valor de codeclr especifica el tipo de depurador para aplicaciones de .NET 5+ (incluidas las aplicaciones de C#).
Solicitud
El request atributo especifica el tipo de solicitud para la configuración de inicio. Actualmente, se admiten los valores launch y attach .
PreLaunchTask
El preLaunchTask atributo especifica una tarea que se va a ejecutar antes de depurar el programa. La propia tarea se puede encontrar en el archivo tasks.json, que se encuentra en la .vscode carpeta junto con el archivo launch.json. La especificación de una tarea de inicio previo de build ejecuta un comando dotnet build antes de iniciar la aplicación.
Programa
El atributo program se establece en la ruta del archivo DLL de la aplicación o el ejecutable del host de .NET que se va a iniciar.
Esta propiedad normalmente toma la forma: ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>.
Donde:
-
<target-framework>es el marco para el que se está compilando el proyecto de depuración. Este valor se encuentra normalmente en el archivo de proyecto como la propiedad "TargetFramework". -
<project-name.dll>es el nombre del archivo dll de salida de compilación del proyecto depurado. Esta propiedad suele ser la misma que el nombre de archivo del proyecto, pero con una extensión ".dll".
Por ejemplo: ${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
Nota:
La extensión .dll indica que este archivo es un archivo de biblioteca de vínculos dinámicos (dll). Si el proyecto se denomina Depurar101, se crea un archivo denominado Debug101.dll cuando una tarea de compilación compila el programa con los archivos Program.cs y Debug101.csproj. Para encontrar el archivo Debug101.dll en la vista EXPLORER, expanda las carpetas "bin" y "Depurar" y, a continuación, abra una carpeta que represente el marco de .NET que usa el proyecto de código, como "net10.0". La versión de .NET Framework se especifica en el archivo .csproj.
Cwd
El cwd atributo especifica el directorio de trabajo del proceso de destino.
Argumentos
El args atributo especifica los argumentos que se pasan al programa al iniciarse. De forma predeterminada, no hay argumentos.
Consola
El console atributo especifica el tipo de consola que se usa cuando se inicia la aplicación. Las opciones son internalConsole, integratedTerminal, y externalTerminal. El valor predeterminado es internalConsole. Los tipos de consola se definen como:
- La configuración de
internalConsolecorresponde al panel CONSOLA DE DEPURACIÓN en el área Paneles debajo del editor de Visual Studio Code. - La configuración de
integratedTerminalcorresponde al panel SALIDA del área Paneles debajo del editor de Visual Studio Code. - La
externalTerminalconfiguración corresponde a una ventana de terminal externa. La aplicación del símbolo del sistema que incluye Windows es un ejemplo de una ventana de terminal.
Importante
El panel CONSOLA DE DEPURACIÓN no admite la entrada de la consola. Por ejemplo, el panel CONSOLA DE DEPURACIÓN no se puede usar si la aplicación incluye una instrucción Console.ReadLine(). Cuando trabajas en una aplicación de consola de C# que lee la entrada del usuario, la configuración console debe establecerse en integratedTerminal o externalTerminal. Las aplicaciones de consola que escriben en la consola, pero que no leen la entrada de la consola, pueden usar cualquiera de las tres console opciones de configuración.
Detener en la entrada
Si necesita detenerse en el punto de entrada del destino, puede opcionalmente establecer stopAtEntry como true.
Edición de una configuración de inicio
Hay muchos escenarios en los que es posible que necesite personalizar el archivo de configuración de inicio. Muchos de esos escenarios implican escenarios de proyectos avanzados o complejos. Este módulo se centra en dos escenarios simples al actualizar el archivo de configuración de inicio:
- La aplicación de consola de C# lee la entrada de la consola.
- El área de trabajo del proyecto incluye más de una aplicación.
Actualización de la configuración de inicio para dar cabida a la entrada de la consola
Como ha leído antes, el panel CONSOLA DE DEPURACIÓN no admite la entrada de la consola. Si depura una aplicación de consola que se basa en la entrada del usuario, debe actualizar el atributo console en la configuración de inicio asociada.
Para editar el console atributo :
Abra el archivo launch.json en el Editor de Visual Studio Code.
Busque el atributo consola.
Seleccione los dos puntos y el valor asignado y, a continuación, escriba un carácter de dos puntos.
Observe que al sobrescribir la información existente con dos puntos, Visual Studio Code IntelliSense muestra las tres opciones de una lista desplegable.
Seleccione integratedTerminal o externalTerminal.
Guarde el archivo launch.json.
Actualización de la configuración de inicio para dar cabida a varias aplicaciones
Si el área de trabajo solo tiene un proyecto que se puede iniciar, la extensión de C# generará automáticamente el archivo launch.json. Si tiene más de un proyecto que se puede iniciar, debe modificar manualmente el archivo launch.json. Visual Studio Code genera un archivo launch.json mediante la plantilla básica que se puede actualizar. En este escenario, creará configuraciones independientes para cada aplicación que quiera depurar. Las tareas de inicio previo, como una tarea de compilación, se pueden crear en el archivo tasks.json.
Supongamos que está trabajando en un proyecto de codificación que incluye varias aplicaciones de consola. La carpeta del proyecto raíz , SpecialProjects, es la carpeta del área de trabajo que se abre en Visual Studio Code al trabajar en el código. Tiene dos aplicaciones que está desarrollando, Project123 y Project456. Use la vista EJECUTAR Y DEPURAR para depurar las aplicaciones. Quiere seleccionar la aplicación que está depurando desde la interfaz de usuario. También quiere que las actualizaciones de código guardadas se compilen antes de asociar el depurador a la aplicación.
Puede lograr los requisitos de este escenario actualizando los archivos launch.json y tasks.json.
En la captura de pantalla siguiente se muestra la vista EXPLORER y la estructura de carpetas que contiene Project123 y Project456.
Observe que la .vscode carpeta que contiene los archivos launch.json y tasks.json está asociado a la carpeta del área de trabajo , SpecialProjects, no a las carpetas de proyecto individuales.
En el ejemplo siguiente se muestra cómo configurar el archivo launch.json para incluir configuraciones para las aplicaciones "Project123" y "Project456".
"version": "0.2.0",
"configurations": [
{
"name": "Launch Project123",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject123",
"program": "${workspaceFolder}/Project123/bin/Debug/net10.0/Project123.dll",
"args": [],
"cwd": "${workspaceFolder}/Project123",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Launch Project456",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "buildProject456",
"program": "${workspaceFolder}/Project456/bin/Debug/net10.0/Project456.dll",
"args": [],
"cwd": "${workspaceFolder}/Project456",
"console": "internalConsole",
"stopAtEntry": false
}
]
Observe que los campos name, preLaunchTask y program están configurados para una aplicación específica.
El atributo name especifica la opción de inicio seleccionable que se muestra en la interfaz de usuario de la vista RUN AND DEBUG, el atributo de programa especifica la ruta de acceso a la aplicación. El atributo preLaunchTask se usa para especificar el nombre de la tarea que se realiza antes de iniciar el depurador. El archivo tasks.json contiene las tareas con nombre y la información necesaria para completar la tarea.
En el ejemplo siguiente se muestra cómo configurar el archivo tasks.json. En este caso, las tareas con nombre especifican operaciones de compilación específicas de las aplicaciones "Project123" y "Project456". La tarea de compilación garantiza que las modificaciones guardadas se compilen y representen en el archivo .dll correspondiente que está asociado al depurador.
"version": "2.0.0",
"tasks": [
{
"label": "buildProject123",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project123/Project123.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "buildProject456",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/Project456/Project456.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
Con las actualizaciones de los archivos launch.json y tasks.json implementados, la vista EJECUTAR Y DEPURAR muestra las opciones de inicio para depurar la aplicación Project123 o Project456. En la captura de pantalla siguiente se muestran los nombres de las configuraciones de inicio que se muestran en el desplegable de configuraciones de inicio.
Resumen
Estas son dos cosas importantes que recordar de esta unidad:
- Las configuraciones de inicio se usan para especificar atributos como
name,type,request,preLaunchTask, yprogramconsole. - Los desarrolladores pueden editar una configuración de inicio para adaptarse a los requisitos del proyecto.