Condividi tramite


Creare attività di compilazione e debug per lo sviluppo di "Apri cartella"

Visual Studio può eseguire automaticamente molti linguaggi di programmazione e codebase diversi. L'opzione Apri cartella consente di eseguire immediatamente il codice per una codebase riconosciuta senza istruzioni speciali e senza creare un progetto. Gli sviluppatori usano in genere questo approccio per i test rapidi.

Alcune codebase richiedono strumenti di compilazione personalizzati che Visual Studio non riconosce o non può elaborare immediatamente con l'opzione Apri cartella . Per questi scenari, è possibile definire attività di compilazione per indicare a Visual Studio come compilare ed eseguire il debug del codice. Le attività di compilazione specificano tutti gli elementi che un linguaggio deve compilare ed eseguire il codice e può essere usato per completare quasi tutte le operazioni necessarie.

Questo articolo descrive come definire le attività di compilazione per configurare le impostazioni di compilazione e debug per una codebase senza progetto non riconosciuta in Visual Studio.

Esplorare i file di configurazione JSON

Per personalizzare una codebase senza progetto, Visual Studio fornisce due file JSON (.json) per le impostazioni di configurazione: attività e avvio. Visual Studio crea (o apre) questi file in base alle esigenze, quando si selezionano opzioni specifiche in Visual Studio Esplora soluzioni.

La tabella seguente descrive i file JSON e come crearli in Esplora soluzioni.

File JSON Scopo della configurazione Accesso a file
tasks.vs.json Definire comandi di compilazione personalizzati, opzioni del compilatore personalizzate e attività arbitrarie (correlate a non compilazione). In Esplora soluzioni fare clic con il pulsante destro del mouse su un file o una cartella per aprire il menu di scelta rapida e scegliere Configura attività.
launch.vs.json Specificare gli argomenti della riga di comando per il debug. In Esplora soluzioni fare clic con il pulsante destro del mouse su un file o una cartella per aprire il menu di scelta rapida e scegliere Aggiungi configurazione di debug.

Aggiungere file JSON al controllo del codice sorgente

Per impostazione predefinita, le attività e avviare i file JSON non sono visibili in Esplora soluzioni. I file si trovano in una cartella nascosta denominata .vs nella cartella radice (\) della codebase. I file sono nascosti perché non vengono comunemente aggiunti al controllo del codice sorgente. È possibile visualizzare i file nascosti in Visual Studio selezionando l'opzione Mostra tutti i file in Esplora soluzioni.

Per aggiungere i file JSON al controllo del codice sorgente, trascinare i file nella cartella radice (\) della codebase nel file system. I file diventano visibili in Esplora soluzioni e disponibili per il controllo del codice sorgente.

Definire le attività con tasks.vs.json

È possibile automatizzare gli script di compilazione e le operazioni esterne sui file nell'area di lavoro corrente eseguendo le azioni come attività direttamente in Visual Studio. Per configurare una nuova attività, fare clic con il pulsante destro del mouse su un file o una cartella in Esplora soluzioni e scegliere Configura attività:

Screenshot che mostra come configurare le attività per automatizzare gli script di compilazione e le operazioni esterne sui file in Esplora soluzioni.

Questa azione crea (o apre) il file tasks.vs.json nella cartella vs . Si definisce un'attività di compilazione o un'attività arbitraria in questo file e Visual Studio aggiunge il nome dell'attività come comando al Esplora soluzioni menu di scelta rapida. È possibile richiamare l'attività selezionando il comando corrispondente in Esplora soluzioni.

Le attività personalizzate possono essere aggiunte a singoli file o a tutti i file di un tipo specifico. Ad esempio, i file di pacchetto NuGet possono essere configurati per avere un'attività "Ripristina pacchetti" oppure tutti i file di origine possono essere configurati per avere un'attività di analisi statica, ad esempio un linter per tutti i file JavaScript (.js).

Creare attività per strumenti non riconosciuti

Se la codebase usa strumenti di compilazione personalizzati non riconosciuti da Visual Studio, non è possibile eseguire ed eseguire il debug del codice in Visual Studio fino a quando non si completano passaggi di configurazione aggiuntivi.

È possibile definire attività di compilazione per indicare a Visual Studio come compilare, ricompilare e pulire il codice. Il file tasks.vs.json combina il ciclo di sviluppo interno di Visual Studio con gli strumenti di compilazione personalizzati definiti per la codebase.

Si supponga che la codebase abbia un singolo file C# denominato hello.cs. Il makefile per una codebase di questo tipo potrebbe essere simile all'esempio seguente:

build: directory hello.exe

hello.exe: hello.cs
    csc -debug hello.cs /out:bin\hello.exe

clean:
    del bin\hello.exe bin\hello.pdb

rebuild: clean build

directory: bin

bin:
    md bin

Per un makefile simile che contiene destinazioni di compilazione, pulizia e ricompilazione, è possibile usare l'opzione Configura attività per il makefile e definire il file di tasks.vs.json seguente. Il file JSON definisce le attività per compilare, ricompilare e pulire la codebase usando NMAKE come strumento di compilazione:

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "makefile-build",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "build",
      "command": "nmake",
      "args": [ "build" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-clean",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "clean",
      "command": "nmake",
      "args": [ "clean" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-rebuild",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "rebuild",
      "command": "nmake",
      "args": [ "rebuild" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    }
  ]
}

Dopo aver definito le attività di compilazione nel file tasks.vs.json, Visual Studio aggiunge i comandi attività corrispondenti al menu di scelta rapida in Esplora soluzioni. In questo esempio, le opzioni Build, Rebuild e Clean vengono aggiunte al menu di scelta rapida per le istanze di makefile nella codebase:

Screenshot che mostra le attività Build, Rebuild e Clean per un makefile aggiunto al menu di scelta rapida in Esplora soluzioni.

Visual Studio elenca i nuovi comandi nel menu di scelta rapida dopo il comando Configura attività in base alle impostazioni contextType . "build", "rebuild" e "clean" sono comandi di compilazione e sono elencati nella sezione "Compila" del menu di scelta rapida.

Quando si seleziona un comando di attività personalizzato nel menu di scelta rapida, viene eseguita l'operazione. Visual Studio mostra l'output dei comandi nella finestra Output ed eventuali errori di compilazione nell'elenco errori.

Creare attività per operazioni arbitrarie

È possibile definire attività personalizzate nel file tasks.vs.json per qualsiasi operazione arbitraria. È possibile definire un'attività per visualizzare il nome del file attualmente selezionato nella finestra Output o elencare i file in una cartella specificata.

Esempio: Nome visualizzato del file attualmente selezionato

Nell'esempio seguente viene illustrato un file tasks.vs.json che definisce una singola attività arbitraria. Quando si richiama questa attività, l'operazione visualizza il nome file del file JavaScript (.js) selezionato.

{
  "version": "0.2.1",
  "tasks": [
    {
      "taskName": "Echo filename",
      "appliesTo": "*.js",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "echo ${file}" ]
    }
  ]
}

Il codice per questa attività definisce le proprietà seguenti:

  • taskName: nome del comando dell'attività per Visual Studio da visualizzare nel menu di scelta rapida. In questo caso, echo filename.
  • appliesTo: i file per il comando task su cui agire. In questo caso, i file JavaScript (.js).
  • command: comando da richiamare. Questa attività usa la variabile di ambiente per identificare l'interprete della COMSPEC riga di comando (in genere cmd.exe).
  • args: qualsiasi argomento da passare quando Visual Studio richiama il comando .
  • ${file}: gli argomenti per questa attività includono una macro che recupera il file attualmente selezionato in Esplora soluzioni.

Dopo aver salvato il file tasks.vs.json, è possibile fare clic con il pulsante destro del mouse su qualsiasi file JavaScript (.js) nella cartella e scegliere Nome file Echo. Visual Studio visualizza il nome file selezionato nella finestra Output .

Esempio: Elencare file e sottocartelle

Nell'esempio seguente viene illustrato un file tasks.vs.json che definisce un'attività per elencare i file e le sottocartelle della cartella bin :

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "List Outputs",
      "appliesTo": "*",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "dir ${outDir}" ]
    }
  ]
}

Il codice per questa attività definisce le proprietà seguenti:

  • taskName: nome del comando dell'attività per il menu di scelta rapida, Elenca output.
  • appliesTo: questa attività agisce su tutti gli elementi nella cartella specificata, come indicato dall'uso del carattere jolly (*).
  • command: simile all'esempio precedente, l'attività usa la COMSPEC variabile di ambiente per identificare l'interprete della riga di comando (cmd.exe).
  • args: quando Visual Studio richiama l'attività, passa una chiamata al dir comando , che elenca gli elementi della directory (cartella).
  • ${outDir}: la {outDir} macro viene definita prima del tasks blocco. Identifica la cartella bin come directory su cui agire.

Questa attività si applica a tutti i file nella codebase. Quando Visual Studio aggiunge il nome del comando per un'attività arbitraria al menu di scelta rapida, antepone il comando con Esegui, come in Esegui output elenco.

Se si apre il menu di scelta rapida per qualsiasi file in Esplora soluzioni, il comando dell'attività Esegui output elenco viene visualizzato come ultimo comando nella sezione "Compila" del menu. Quando si seleziona Esegui output elenco, Visual Studio elenca il contenuto della cartella bin per la codebase nella finestra Output :

Screenshot che mostra un'attività arbitraria aggiunta al menu di scelta rapida in Visual Studio Esplora soluzioni.

Usare più file task.vs.json

È possibile avere più file tasks.vs.json nella cartella radice (\) e nelle sottocartelle della codebase. Questo approccio offre flessibilità per definire un comportamento diverso per sottocartelle o file specifici nella codebase.

Visual Studio aggrega o esegue l'override delle impostazioni in tutta la codebase e assegna priorità ai file nell'ordine seguente:

  1. File di impostazioni nella cartella .vs nella cartella radice (\).
  2. Cartella in cui viene calcolata un'impostazione.
  3. Cartella padre della cartella corrente, fino alla cartella radice (\).
  4. File di impostazioni nella cartella radice (\).

Queste regole di aggregazione si applicano solo alle istanze del file tasks.vs.json .

Esaminare le proprietà per tasks.vs.json

Le sezioni seguenti descrivono alcune delle proprietà che è possibile specificare in un file di tasks.vs.json .

Impostare la proprietà appliesTo

È possibile creare attività per qualsiasi file o cartella specificando il nome del file o della cartella con la appliesTo proprietà , ad esempio "appliesTo": "hello.js".

La tabella seguente riepiloga i valori della maschera file che è possibile usare con la proprietà per produrre un comportamento specifico dell'attività appliesTo :

Valore (maschera file) L'attività si applica a
"*" Tutti i file e le cartelle nell'area di lavoro
"*/" Tutte le cartelle nell'area di lavoro
"*.js" Tutti i file con l'estensione JavaScript (.js) nell'area di lavoro
"/*.js" Tutti i file con estensione JavaScript (.js) nella cartella radice (\) dell'area di lavoro
"src/*/" Tutte le sottocartelle della cartella src
"makefile" Tutti i file denominati makefile nell'area di lavoro
"/makefile" Solo il file denominato makefile nella cartella radice (\) dell'area di lavoro

Usare macro negli argomenti dell'attività

È possibile passare macro come argomenti per un'attività per aumentare il comportamento dell'attività quando Visual Studio richiama il comando.

Nella tabella seguente sono elencati alcuni esempi di macro:

Macro Descrizione Esempi
${env.<VARIABLE>} Specifica qualsiasi variabile di ambiente utilizzabile nel prompt dei comandi per gli sviluppatori. Per altre informazioni, vedere Prompt dei comandi per gli sviluppatori e PowerShell per sviluppatori. ${env.PATH}, ${env.COMSPEC}
${workspaceRoot} Fornisce il percorso completo della cartella dell'area di lavoro. C:\sources\hello, C:\sources\hello\bin
${file} Fornisce il percorso completo del file o della cartella. C:\sources\hello\src\hello.js*, C:\sources\hello\src\test.js*
${relativeFile} Fornisce il percorso relativo del file o della cartella. src\hello.js*, bin\hello.exe
${fileBasename} Fornisce il nome del file, escluso il percorso o l'estensione. hello, test
${fileDirname} Fornisce il percorso completo del file, escluso il nome file. C:\sources\hello\src*, C:\sources\hello\bin\test\*
${fileExtname} Fornisce l'estensione del file selezionato. .js, .cs, .exe

Configurare il debug con launch.vs.json

Visual Studio fornisce un file launch.vs.json che è possibile usare per configurare il debug per la codebase.

Nota

Per configurare i progetti CMake per il debug, vedere Configurare le sessioni di debug di CMake.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse su un file eseguibile (.exe) e scegliere Aggiungi configurazione di debug:

    Screenshot che mostra come selezionare l'opzione

  2. Nella finestra di dialogo Selezionare un debugger selezionare un'opzione di configurazione di debug dall'elenco e quindi scegliere Seleziona:

    Screenshot che mostra come selezionare un debugger per la configurazione di avvio in Esplora soluzioni.

    Se il file launch.vs.json non esiste già, Visual Studio crea il file. Di seguito è riportato un esempio del file creato per l'eseguibile hello.exe :

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "bin\\hello.exe",
          "projectTarget": "",
          "name": "hello.exe"
        }
      ]
    }
    
  3. Dopo aver creato un file di avvio, fare clic con il pulsante destro del mouse sul file eseguibile per la codebase in Esplora soluzioni e scegliere Imposta come elemento di avvio.

    L'eseguibile viene designato come elemento di avvio per la codebase e Visual Studio imposta l'etichetta per il pulsante Start di debug in modo da riflettere il nome del file eseguibile:

    Screenshot che mostra un'etichetta personalizzata per l'azione di avvio in Visual Studio.

    Quando si avvia il debugger con F5, Visual Studio avvia il debug del codice e si arresta in qualsiasi punto di interruzione impostato. Tutte le finestre di debug già note sono disponibili e funzionanti.

    Per altre informazioni sulle attività di compilazione e debug personalizzate nei progetti di cartelle aperte C++, vedere Supporto di Open Folder per sistemi di compilazione C++ in Visual Studio.

Specificare gli argomenti per il debug

È possibile specificare gli argomenti della riga di comando da passare al debugger nel file launch.vs.json . Aggiungere gli argomenti nella matrice args, come illustrato nell'esempio seguente:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe"
    },
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe a1",
      "args": [ "a1" ]
    }
  ]
}

Avviare una configurazione di debug

È possibile creare il numero desiderato di configurazioni di debug. Quando si salva il file di avvio , i nomi di configurazione vengono aggiunti all'elenco a discesa destinazione di debug. È possibile selezionare una destinazione specifica per avviare il debugger:

Screenshot che mostra le configurazioni disponibili nell'elenco a discesa Destinazione di debug in Visual Studio Esplora soluzioni.

Se non vengono visualizzate le destinazioni aggiuntive nel menu, selezionare Mostra /Nascondi destinazioni di debug e configurare le destinazioni visibili.

Comprendere la precedenza per le configurazioni

Visual Studio analizza due posizioni per gli elementi specificati nella configurations proprietà della matrice nei file launch.vs.json :

  • Cartella radice (\) per la codebase
  • Cartella .vs

Se sono presenti launch.vs.json file in entrambi i percorsi e si verifica un conflitto nella definizione per una configurazione, il valore nel file con estensione vs\launch.vs.json ha la precedenza.

Usare altri file di impostazioni

Oltre all'attività e all'avvio di file JSON, Visual Studio legge le impostazioni da altri file di configurazione definiti nella codebase. Due file comunemente usati includono settings.json e .gitignore.

Definire le impostazioni del codice con .vscode\settings.json

Visual Studio legge impostazioni limitate da un file denominato settings.json, quando il file si trova in una cartella denominata .vscode.

Questa funzionalità viene fornita per le codebase sviluppate in precedenza in Visual Studio Code. Attualmente, l'unica impostazione letta dal file .vscode\settings.json è files.exclude. Questa impostazione viene usata per filtrare visivamente i file in Esplora soluzioni e da alcuni strumenti di ricerca.

È possibile avere più file con estensione vscode\settings.json nella codebase. Le impostazioni lette da questo file vengono applicate alla cartella padre di .vscode e a tutte le relative sottocartelle.

Configurare i file Git con estensione gitignore

È possibile usare un file con estensione gitignore per informare Git quali file ignorare quando si applica il controllo del codice sorgente. I file con estensione gitignore vengono comunemente inclusi come parte di una codebase in modo che le impostazioni possano essere condivise con tutti gli sviluppatori della codebase. Visual Studio legge i modelli nei file con estensione gitignore per filtrare gli elementi visivamente e da alcuni strumenti di ricerca.

Le impostazioni lette dal file con estensione gitignore vengono applicate alla relativa cartella padre e a tutte le sottocartelle.