Použití kontejnerů k sestavení a ladění pomocí editoru Visual Studio Code
Důležité
Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.
Pokud pro vývoj aplikací používáte Visual Studio Code, můžete projekt nastavit tak, aby se sestavil uvnitř kontejneru. Pak můžete sestavit a ladit přímo v kontejneru. V tomto tématu se předpokládá, že jste vytvořili projekt pomocí editoru Visual Studio Code, aby adresář .vscode existoval a měl dva soubory launch.json a settings.json.
Toto téma popisuje použití kontejnerů místně; Použití GitHub Codespaces k sestavení a ladění popisuje použití GitHub Codespaces k úpravám, sestavování, nasazování a ladění aplikací Azure Sphere.
Nastavení složky .devcontainer
V adresáři nejvyšší úrovně projektu vytvořte složku s názvem .devcontainer. V této složce vytvořte soubor s názvem devcontainer.json s následujícím obsahem:
{
"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"
]
}
Dále ve složce .devcontainer vytvořte soubor s názvem Dockerfile s následujícím obsahem:
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" ]
Počáteční FROM
řádek určuje standardní image Dockeru Azure Sphere jako základní vývojový kontejner a druhá říká, že se má tento základní kontejner použít jako prostředí sestavení. Řádek COPY
zkopíruje obsah úložiště do adresáře /src/ kontejneru. Určuje WORKDIR
adresář sestavení. Příkaz RUN
poskytuje příkaz CMake pro vygenerování souborů sestavení. Nakonec určí, ENTRYPOINT
že nindžové by měli být vyvolána k skutečnému sestavení aplikace.
Sestavení a ladění projektu
Otevřete složku projektu v editoru Visual Studio Code. Visual Studio Code rozpozná nové soubory a otevře okno se zprávou s informací, že složka obsahuje konfigurační soubor vývojového kontejneru. Znovu otevřete složku pro vývoj v kontejneru." Výběrem tlačítka Znovu otevřít v kontejneru znovu otevřete složku v kontejneru vytvořeném souborem .devcontainer/Dockerfile. Záhlaví editoru Visual Studio Code se změní, aby se zobrazilo, že upravujete v kontejneru. Pokud otevřete kartu Rozšíření v levém navigačním panelu, uvidíte v kontejneru nainstalovaná obě rozšíření místně i rozšíření nainstalovaná.
Stisknutím klávesy F5 sestavte projekt a začněte ladit. Aplikace se sestaví a načte do zařízení jako obvykle. Pokud jste v kódu nastavili zarážku, aplikace se spustí, dokud nedosáhnete zarážky. K procházení kódu můžete použít obvyklé ladicí příkazy. Další podrobnosti najdete v tématu Ladění v dokumentaci editoru Visual Studio Code.
Po dokončení ladění stiskněte Shift+F5 nebo ikonu Zastavit. Pokud chcete kontejner zavřít, použijte příkaz Zavřít vzdálené připojení z nabídky Vzdálená nabídka na panelu nástrojů editoru Visual Studio Code.