Examine o arquivo de configurações de inicialização
- 11 minutos
Você já viu que o Visual Studio Code usa o arquivo launch.json para configurar o depurador. Se você estiver criando um aplicativo de console C# simples, é provável que o Visual Studio Code gere um arquivo de launch.json que tenha todas as informações necessárias para depurar seu código com êxito. No entanto, há casos em que você precisa modificar uma configuração de inicialização, por isso é importante entender os atributos de uma configuração de inicialização.
Atributos de uma configuração de inicialização
O arquivo launch.json inclui uma ou mais configurações de inicialização na configurations lista. As configurações de inicialização usam atributos para oferecer suporte a diferentes cenários de depuração. Os seguintes atributos são obrigatórios para cada configuração de inicialização:
-
name: O nome de fácil leitura atribuído à configuração de inicialização. -
type: O tipo de depurador a ser usado para a configuração de inicialização. -
request: O tipo de solicitação da configuração de inicialização.
Esta seção define alguns dos atributos que você pode encontrar.
Nome
O name atributo especifica o nome de exibição para a configuração de inicialização. O valor atribuído a name aparece na lista suspensa de configurações de lançamento (no painel de controles na parte superior da vista EXECUTAR E DEPURAR).
Tipo
O type atributo especifica o tipo de depurador a ser usado para a configuração de inicialização. Um valor de codeclr especifica o tipo de depurador para aplicações .NET 5+ (incluindo aplicações C#).
Pedido
O request atributo especifica o tipo de solicitação para a configuração de inicialização. Atualmente, os valores launch e attach são suportados.
TarefaPréLançamento
O preLaunchTask atributo especifica uma tarefa a ser executada antes de depurar o programa. A tarefa em si pode ser encontrada no arquivo tasks.json, que está na .vscode pasta junto com o arquivo launch.json. Especificar uma tarefa de pré-lançamento com build executa um comando dotnet build antes de iniciar a aplicação.
Programa
O program atributo é definido para o caminho do executável da aplicação dll ou do host .NET para lançar.
Esta propriedade normalmente assume a forma: ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>.
Onde:
-
<target-framework>é a estrutura para a qual o projeto de depuração está sendo criado. Esse valor é normalmente encontrado no arquivo de projeto como a propriedade 'TargetFramework'. -
<project-name.dll>é o nome da dll de saída de compilação do projeto depurado. Esta propriedade é normalmente a mesma que o nome do arquivo de projeto, mas com uma extensão '.dll'.
Por exemplo: ${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
Observação
A extensão .dll indica que esse arquivo é um arquivo de biblioteca de vínculo dinâmico (dll). Se seu projeto é chamado Debug101, um arquivo chamado Debug101.dll é criado quando uma tarefa de compilação compila seu programa usando os arquivos Program.cs e Debug101.csproj. Pode encontrar o ficheiro Debug101.dll na vista EXPLORER expandindo as pastas "bin" e "Debug", e depois abrindo uma pasta que represente o .NET framework usado pelo seu projeto de código, como "net10.0". A versão do .NET Framework é especificada no arquivo .csproj.
Cwd
O cwd atributo especifica o diretório de trabalho do processo de destino.
Argumentos
O args atributo especifica os argumentos que são passados para o seu programa na inicialização. Não há argumentos por padrão.
Consola
O console atributo especifica o tipo de console que é usado quando o aplicativo é iniciado. As opções são internalConsole, integratedTerminale externalTerminal. A predefinição é internalConsole. Os tipos de console são definidos como:
- A
internalConsoleconfiguração corresponde ao painel DEBUG CONSOLE na área dos painéis, abaixo do editor do Visual Studio Code. - A configuração
integratedTerminalcorresponde ao painel OUTPUT na área de painéis abaixo do Editor de Código do Visual Studio. - A
externalTerminalconfiguração corresponde a uma janela de terminal externo. A aplicação Linha de Comandos que vem com o Windows é um exemplo de uma janela de terminal.
Importante
O painel DEBUG CONSOLE não suporta a entrada do console. Por exemplo, o DEBUG CONSOLE não pode ser usado se o aplicativo incluir uma Console.ReadLine() instrução. Quando estiver a trabalhar numa aplicação de consola C# que lê a entrada do utilizador, a console configuração deve ser definida como integratedTerminal ou externalTerminal. Os aplicativos de console que gravam no console, mas não leem a entrada do console, podem usar qualquer uma das três console configurações.
Parada na entrada
Se você precisar parar no ponto de entrada do destino, você pode, opcionalmente, definir stopAtEntry como .true
Editar uma configuração de inicialização
Há muitos cenários em que você pode precisar personalizar o arquivo de configuração de inicialização. Muitos desses cenários envolvem cenários de projeto avançados ou complexos. Este módulo se concentra em dois cenários simples quando a atualização do arquivo de configuração de inicialização é necessária:
- Seu aplicativo de console C# lê a entrada do console.
- Seu espaço de trabalho de projeto inclui mais de um aplicativo.
Atualize a configuração de inicialização para acomodar a entrada do console
Como você leu anteriormente, o painel DEBUG CONSOLE não suporta a entrada do console. Se você estiver depurando um aplicativo de console que depende da entrada do usuário, precisará atualizar o console atributo na configuração de inicialização associada.
Para editar o console atributo:
Abra o arquivo launch.json no Editor de Códigos do Visual Studio.
Localize o atributo do console .
Selecione os dois pontos e o valor atribuído e, em seguida, insira um caractere de dois pontos.
Observe que quando você substitui as informações existentes com dois pontos, o Visual Studio Code IntelliSense exibe as três opções em uma lista suspensa.
Selecione integratedTerminal ou externalTerminal.
Salve o arquivo launch.json.
Atualize a configuração de inicialização para acomodar vários aplicativos
Se seu espaço de trabalho tiver apenas um projeto inicializável, a extensão C# gerará automaticamente o arquivo launch.json. Se você tiver mais de um projeto inicializável, precisará modificar seu arquivo launch.json manualmente. O Visual Studio Code gera um arquivo launch.json usando o modelo básico que você pode atualizar. Nesse cenário, você cria configurações separadas para cada aplicativo que você deseja depurar. Tarefas de pré-lançamento, como uma tarefa de compilação, podem ser criadas no arquivo tasks.json.
Suponha que você esteja trabalhando em um projeto de codificação que inclui vários aplicativos de console. A pasta de projeto raiz, SpecialProjects, é a pasta de espaço de trabalho que você abre no Visual Studio Code quando você trabalha em seu código. Tem duas aplicações que está a desenvolver, Project123 e Project456. A visualização RUN AND DEBUG é usada para depurar os aplicativos. Você deseja selecionar o aplicativo que está depurando da interface do usuário. Você também deseja que todas as atualizações de código salvas sejam compiladas antes de anexar o depurador ao seu aplicativo.
Você pode atingir os requisitos para esse cenário atualizando os arquivos launch.json e tasks.json.
A captura de tela a seguir mostra o modo de exibição EXPLORER e a estrutura de pastas que contém Project123 e Project456.
Observe que a .vscode pasta que contém os arquivos launch.json e tasks.json está associada à pasta de espaço de trabalho, SpecialProjects, não às pastas de projeto individuais.
O exemplo a seguir mostra como você pode configurar o arquivo launch.json para incluir configurações para os aplicativos "Project123" e "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 os campos nome, preLaunchTask e programa estão todos configurados para um aplicativo específico.
O atributo name especifica a opção de inicialização selecionável que é exibida na interface do usuário da exibição RUN AND DEBUG, o atributo program especifica o caminho para seu aplicativo. O atributo preLaunchTask é usado para especificar o nome da tarefa executada antes de iniciar o depurador. O arquivo tasks.json contém as tarefas nomeadas e as informações necessárias para concluir a tarefa.
O exemplo a seguir mostra como você pode configurar o arquivo tasks.json. Nesse caso, as tarefas nomeadas especificam operações de compilação que são específicas para os aplicativos "Project123" e "Project456". A tarefa de compilação garante que todas as edições salvas sejam compiladas e representadas no arquivo de .dll correspondente anexado ao 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"
}
]
Com as atualizações dos arquivos launch.json e tasks.json, a visualização EXECUTAR E DEPURAR exibe opções de inicialização para depurar o aplicativo Project123 ou Project456. A captura de tela a seguir mostra os nomes das configurações de inicialização exibidas na lista suspensa de configuração de inicialização:
Recapitulação
Aqui estão duas coisas importantes para lembrar desta unidade:
- As configurações de inicialização são usadas para especificar atributos como
name,type, ,request,preLaunchTaskprogrameconsole. - Os desenvolvedores podem editar uma configuração de inicialização para acomodar os requisitos do projeto.