Usare i contenitori per la compilazione e il debug con Visual Studio Code
Importante
Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).
Se si usa Visual Studio Code per lo sviluppo di applicazioni, è possibile configurare il progetto in modo che venga compilato all'interno di un contenitore. È quindi possibile compilare ed eseguire il debug direttamente nel contenitore. In questo argomento si presuppone che sia stato creato un progetto con Visual Studio Code in modo che la directory vscode esista e abbia i due file launch.json e settings.json.
Questo argomento illustra l'uso dei contenitori in locale; Usare GitHub Codespaces per la compilazione e il debug descrive l'uso di GitHub Codespaces per modificare, compilare, distribuire ed eseguire il debug delle app Azure Sphere.
Configurare la cartella .devcontainer
Nella directory di primo livello del progetto creare una cartella denominata .devcontainer. In questa cartella creare un file denominato devcontainer.json con il contenuto seguente:
{
"name": "Azure Sphere Blink",
"runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"],
"build": {
"dockerfile": "Dockerfile",
"target": "dev"
},
// Use 'settings' to set *default* container specific settings.json values on container create.
// You can edit these settings after create using File > Preferences > Settings > Remote.
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
// Use 'appPort' to create a container with published ports. If the port isn't working, be sure
// your server accepts connections from all interfaces (0.0.0.0 or '*'), not just localhost.
// "appPort": [],
// Uncomment the next line to run commands after the container is created.
// "postCreateCommand": "gcc -v",
// Comment out the next line if you want to run as root instead
"remoteUser": "vscode",
// Add the IDs of extensions you want installed when the container is created in the array below.
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.azure-sphere-tools",
"ms-vscode.azure-sphere-tools-ui"
]
}
Creare quindi un file denominato Dockerfile nella cartella devcontainer con il contenuto seguente:
FROM mcr.microsoft.com/azurespheresdk:latest AS dev
FROM dev AS build
COPY ./ /src/
WORKDIR /out
RUN cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="/opt/azurespheresdk/CMakeFiles/AzureSphereToolchain.cmake" \
-DAZURE_SPHERE_TARGET_API_SET="latest-lts" -DCMAKE_BUILD_TYPE="Release" "/src"
ENTRYPOINT [ "ninja" ]
La riga iniziale FROM
specifica l'immagine Docker standard di Azure Sphere come contenitore di sviluppo di base e la seconda indica di usare tale contenitore di base come ambiente di compilazione. La COPY
riga copia il contenuto del repository nella directory /src/ del contenitore. Specifica WORKDIR
la directory di compilazione. Il RUN
comando fornisce il comando CMake per generare i file di compilazione. Infine, ENTRYPOINT
specifica che ninja deve essere richiamato per compilare effettivamente l'applicazione.
Compilare ed eseguire il debug del progetto
Aprire la cartella di progetto in Visual Studio Code. Visual Studio Code rileva i nuovi file e apre una finestra di messaggio che indica che la cartella contiene un file di configurazione del contenitore di sviluppo. Riaprire la cartella per lo sviluppo in un contenitore." Selezionare il pulsante Riapri nel contenitore per riaprire la cartella nel contenitore creato dal file .devcontainer/Dockerfile. La barra del titolo in Visual Studio Code cambia per indicare che si sta modificando in un contenitore. Se si apre la scheda Estensioni nella barra di spostamento a sinistra, vengono visualizzate entrambe le estensioni installate in locale e quelle installate nel contenitore.
Premere F5 per compilare il progetto e iniziare il debug. L'applicazione compila e trasferisce localmente il dispositivo come di consueto. Se nel codice è stato impostato un punto di interruzione, l'app viene eseguita fino al raggiungimento del punto di interruzione. È possibile usare i soliti comandi di debug per esaminare il codice. Per altri dettagli, vedere l'argomento Debug nella documentazione di Visual Studio Code.
Al termine del debug, premere MAIUSC+F5 o l'icona Arresta. Per chiudere il contenitore, usare il comando Chiudi connessione remota dal menu Remoto sulla barra degli strumenti di Visual Studio Code.