Esaminare il file di avvio delle configurazioni
- 11 minuti
Si è già visto che Visual Studio Code usa il file launch.json per configurare il debugger. Se si crea una semplice applicazione console C#, è probabile che Visual Studio Code generi un file launch.json con tutte le informazioni necessarie per eseguire correttamente il debug del codice. Tuttavia, esistono casi in cui è necessario modificare una configurazione di avvio, quindi è importante comprendere gli attributi di una configurazione di avvio.
Attributi di una configurazione di avvio
Il file launch.json include una o più configurazioni di avvio nell'elenco configurations . Le configurazioni di avvio usano attributi per supportare diversi scenari di debug. Per ogni configurazione di avvio sono obbligatori gli attributi seguenti:
-
name: nome leggibile assegnato alla configurazione di lancio. -
type: tipo di debugger da usare per la configurazione di avvio. -
request: tipo di richiesta della configurazione di avvio.
Questa sezione definisce alcuni degli attributi che potresti incontrare.
Nome
L'attributo name specifica il nome visualizzato per la configurazione di avvio. Il valore assegnato a name appare nell'elenco a discesa delle configurazioni di avvio (nel pannello dei controlli nella parte superiore della visualizzazione RUN AND DEBUG).
TIPO
L'attributo type specifica il tipo di debugger da usare per la configurazione di avvio. Un valore di codeclr specifica il tipo di debugger per le applicazioni .NET 5+ (incluse le applicazioni C#).
Richiesta
L'attributo request specifica il tipo di richiesta per la configurazione di avvio. Attualmente, i valori launch e attach sono supportati.
PreLaunchTask
L'attributo specifica un'attività preLaunchTask da eseguire prima di eseguire il debug del programma. L'attività stessa è disponibile nel file tasks.json, che si trova nella .vscode cartella insieme al file launch.json. Se si specifica un'attività di preavvio di build, viene eseguito un comando dotnet build prima dell'avvio dell'applicazione.
Program
L'attributo program è impostato sul percorso della dll dell'applicazione o dell'eseguibile dell'host .NET da avviare.
Questa proprietà assume in genere il formato : ${workspaceFolder}/bin/Debug/<target-framework>/<project-name.dll>.
Dove:
-
<target-framework>è il framework per cui viene compilato il progetto di debug. Questo valore viene in genere trovato nel file di progetto come proprietà 'TargetFramework'. -
<project-name.dll>è il nome della DLL di output di compilazione del progetto sottoposto a debug. Questa proprietà è in genere uguale al nome del file di progetto, ma con un '.dll' estensione.
Ad esempio: ${workspaceFolder}/bin/Debug/net10.0/Debug101.dll
Annotazioni
L'estensione.dll indica che questo file è un file dll (Dynamic Link Library). Se il progetto è denominato Debug101, viene creato un file denominato Debug101.dll quando un'attività di compilazione compila il programma usando i file Program.cs e Debug101.csproj. È possibile trovare il fileDebug101.dll nella visualizzazione EXPLORER espandendo le cartelle "bin" e "Debug" e quindi aprendo una cartella che rappresenta il framework .NET usato dal progetto di codice, ad esempio "net10.0". La versione di .NET Framework viene specificata nel file con estensione csproj.
CWD
L'attributo cwd specifica la directory di lavoro del processo di destinazione.
Argomenti
L'attributo args specifica gli argomenti passati al programma all'avvio. Per impostazione predefinita, non sono presenti argomenti.
Console
L'attributo console specifica il tipo di console usato all'avvio dell'applicazione. Le opzioni sono internalConsole, integratedTerminal e externalTerminal. L'impostazione predefinita è internalConsole. I tipi di console sono definiti come:
- L'impostazione
internalConsolecorrisponde al pannello DEBUG CONSOLE nell'area Pannelli sotto l'editor di Visual Studio Code. - L'impostazione
integratedTerminalcorrisponde al pannello OUTPUT nell'area Pannelli sotto l'editor di Visual Studio Code. - L'impostazione
externalTerminalcorrisponde a una finestra del terminale esterno. L'applicazione del prompt dei comandi fornita con Windows è un esempio di finestra del terminale.
Importante
Il pannello DEBUG CONSOLE non supporta l'input della console. Ad esempio, la CONSOLE DEBUG non può essere usata se l'applicazione include un'istruzione Console.ReadLine() . Quando si lavora su un'applicazione console C# che legge l'input dell'utente, l'impostazione console deve essere impostata su integratedTerminal o externalTerminal. Le applicazioni console che scrivono nella console, ma non leggono l'input dalla console, possono usare una delle tre console impostazioni.
Arrestare a Entry
Se è necessario arrestarsi nel punto di ingresso della destinazione, è possibile opzionalmente impostare stopAtEntry su true.
Modificare una configurazione di avvio
Esistono molti scenari in cui potrebbe essere necessario personalizzare il file di configurazione di avvio. Molti di questi scenari prevedono scenari di progetto avanzati o complessi. Questo modulo è incentrato su due semplici scenari durante l'aggiornamento del file di configurazione di avvio:
- L'applicazione console C# legge l'input dalla console.
- L'area di lavoro del progetto include più di un'applicazione.
Aggiornare la configurazione di avvio per supportare l'input della console
Come illustrato in precedenza, il pannello DEBUG CONSOLE non supporta l'input della console. Se si esegue il debug di un'applicazione console che si basa sull'input dell'utente, è necessario aggiornare l'attributo console nella configurazione di avvio associata.
Per modificare l'attributo console :
Aprire il file launch.json nell'editor di Visual Studio Code.
Individuare l'attributo della console .
Selezionare i due punti e il valore assegnato e quindi immettere un carattere due punti.
Si noti che quando si sovrascrivono le informazioni esistenti con due punti, Visual Studio Code IntelliSense visualizza le tre opzioni in un elenco a discesa.
Seleziona integratedTerminal o externalTerminal.
Salvare il file launch.json.
Aggiornare la configurazione di avvio per supportare più applicazioni
Se l'area di lavoro include un solo progetto avviabile, l'estensione C# genererà automaticamente il file launch.json. Se si dispone di più progetti avviabili, è necessario modificare manualmente il file launch.json. Visual Studio Code genera un file launch.json usando il modello di base che è possibile aggiornare. In questo scenario si creano configurazioni separate per ogni applicazione di cui si vuole eseguire il debug. Le attività di preavvio, ad esempio un'attività di compilazione, possono essere create nel file tasks.json.
Si supponga di lavorare a un progetto di codifica che include diverse applicazioni console. La cartella del progetto radice SpecialProjects è la cartella dell'area di lavoro aperta in Visual Studio Code quando si lavora sul codice. Sono disponibili due applicazioni in fase di sviluppo, Project123 e Project456. Usare la visualizzazione RUN AND DEBUG per eseguire il debug delle applicazioni. Si vuole selezionare l'applicazione di cui si sta eseguendo il debug dall'interfaccia utente. È anche necessario compilare eventuali aggiornamenti del codice salvati prima di collegare il debugger all'applicazione.
È possibile ottenere i requisiti per questo scenario aggiornando i file launch.json e tasks.json.
Lo screenshot seguente mostra la visualizzazione EXPLORER e la struttura di cartelle contenente Project123 e Project456.
Si noti che la .vscode cartella contenente i file launch.json e tasks.json è associata alla cartella dell'area di lavoro, SpecialProjects, non alle singole cartelle di progetto.
Nell'esempio seguente viene illustrato come configurare il file launch.json in modo da includere le configurazioni per le applicazioni "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
}
]
Si noti che i campi nome, preLaunchTask e programma sono tutti configurati per un'applicazione specifica.
L'attributo name specifica l'opzione di avvio selezionabile visualizzata nell'interfaccia utente della visualizzazione RUN AND DEBUG, l'attributo del programma specifica il percorso dell'applicazione. L'attributo preLaunchTask viene usato per specificare il nome dell'attività eseguita prima dell'avvio del debugger. Il filetasks.json contiene le attività denominate e le informazioni necessarie per completare l'attività.
Nell'esempio seguente viene illustrato come configurare il file tasks.json. In questo caso, le attività denominate specificano operazioni di compilazione specifiche per le applicazioni "Project123" e "Project456". L'attività di compilazione garantisce che tutte le modifiche salvate vengano compilate e rappresentate nel file .dll corrispondente collegato al debugger.
"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 gli aggiornamenti ai file launch.json e tasks.json sul posto, la visualizzazione ESEGUI E DEBUG visualizza le opzioni di avvio per il debug dell'applicazione Project123 o Project456. Lo screenshot seguente mostra i nomi delle configurazioni di avvio visualizzate nell'elenco a discesa della configurazione di avvio:
Riepilogo
Ecco due aspetti importanti da ricordare da questa unità:
- Le configurazioni di avvio vengono usate per specificare attributi quali
name,type,requestpreLaunchTask,program, econsole. - Gli sviluppatori possono modificare una configurazione di avvio per soddisfare i requisiti del progetto.