Compartilhar via


Usar contêineres para build e depuração com o Visual Studio Code

Importante

Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Se você usar o Visual Studio Code para desenvolvimento de aplicativos, poderá configurar seu projeto para que ele seja compilado dentro de um contêiner. Em seguida, você pode criar e depurar diretamente no contêiner. Este tópico pressupõe que você tenha criado um projeto com o Visual Studio Code para que o diretório .vscode exista e tenha os dois arquivos launch.json e settings.json.

Este tópico discute o uso de contêineres localmente; Usar GitHub Codespaces para build e depuração descreve o uso do GitHub Codespaces para editar, compilar, implantar e depurar seus aplicativos do Azure Sphere.

Configurar a pasta .devcontainer

No diretório de nível superior do projeto, crie uma pasta chamada .devcontainer. Nessa pasta, crie um arquivo chamado devcontainer.json com o seguinte conteúdo:

{
    "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"
    ]
}

Em seguida, crie um arquivo chamado Dockerfile na pasta .devcontainer com o seguinte conteúdo:

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" ]

A linha inicial FROM especifica a imagem padrão do Docker do Azure Sphere como o contêiner de desenvolvimento base e a segunda diz para usar esse contêiner base como o ambiente de build. A COPY linha copia o conteúdo do repositório para o diretório /src/ do contêiner. O WORKDIR especifica o diretório de compilação. O RUN comando fornece o comando CMake para gerar os arquivos de compilação. Por fim, o especifica que ninja ENTRYPOINT deve ser invocado para realmente construir o aplicativo.

Compilar e depurar o projeto

Abra a pasta do projeto no Visual Studio Code. O Visual Studio Code detecta os novos arquivos e abre uma caixa de mensagem dizendo "A pasta contém um arquivo de configuração do Contêiner de Desenvolvimento. Reabra a pasta para desenvolver em um contêiner." Selecione o botão Reabrir no Contêiner para reabrir a pasta no contêiner criado pelo arquivo .devcontainer/Dockerfile. A barra de título no Visual Studio Code é alterada para mostrar que você está editando em um contêiner. Se você abrir a guia Extensões na barra de navegação esquerda, verá as extensões instaladas localmente e as instaladas no contêiner.

Pressione F5 para criar seu projeto e iniciar a depuração. Seu aplicativo é compilado e carregado lateralmente em seu dispositivo como de costume. Se você tiver definido um ponto de interrupção em seu código, o aplicativo será executado até que o ponto de interrupção seja atingido. Você pode usar os comandos de depuração usuais para percorrer seu código. Consulte o tópico Depuração na documentação do Visual Studio Code para obter mais detalhes.

Quando terminar de depurar, pressione Shift+F5 ou o ícone Parar. Para fechar o contêiner, use o comando Fechar Conexão Remota no menu Remoto na barra de ferramentas do Visual Studio Code.