Referência de esquema tasks.vs.json (C++)

Para informar ao Visual Studio como criar seu código-fonte em um projeto Open Folder, adicione um arquivo tasks.vs.json. Defina qualquer tarefa arbitrária nesse arquivo e, em seguida, invoque-a no menu de contexto do Gerenciador de Soluções. Projetos CMake não usam este arquivo porque todos os comandos de build são especificados em CMakeLists.txt. Para sistemas de build diferentes do CMake, é em tasks.vs.json que você pode especificar comandos de build e invocar scripts de build. Para obter informações gerais sobre como usar tasks.vs.json, confira Personalizar o build e depurar tarefas para desenvolvimento "Open Folder".

Uma tarefa tem uma propriedade type que pode ter um dos quatro valores: default, launch, remote ou msbuild. A maioria das tarefas deve usar launch, a menos que uma conexão remota seja necessária.

Propriedades padrão

As propriedades padrão estão disponíveis em todos os tipos de tarefas:

Propriedade Type Descrição
taskLabel string (Exigido.) Especifica o rótulo da tarefa usado na interface do usuário.
appliesTo string (Exigido.) Especifica em quais arquivos o comando pode ser executado. Há suporte para o uso de curingas, por exemplo: "", ".cpp", "/*.txt"
contextType string Valores permitidos: "custom", "build", "clean", "rebuild". Determina onde, no menu de contexto, a tarefa será exibida. O padrão é "custom".
output string Especifica uma marca de saída para sua tarefa.
inheritEnvironments array Especifica um conjunto de variáveis de ambiente herdadas de várias origens. Você pode definir variáveis em arquivos como CMakeSettings.json ou CppProperties.json e disponibilizá-las para o contexto da tarefa. Visual Studio 16.4: especifique variáveis de ambiente por tarefa usando a sintaxe env.VARIABLE_NAME. Para remover definição de uma variável, defina-a como "null".
passEnvVars boolean Especifica se as variáveis de ambiente adicionais devem ou não ser incluídas no contexto da tarefa. Essas variáveis são diferentes daquelas definidas usando a propriedade envVars. O padrão é "true".

Propriedades de inicialização

Quando o tipo de tarefa é launch, estas propriedades estão disponíveis:

Propriedade Type Descrição
command string Especifica o caminho completo do processo ou script a ser iniciado.
args array Especifica uma lista separada por vírgulas de argumentos passados para o comando.
launchOption string Valores permitidos: "None", "ContinueOnError", "IgnoreError". Especifica como proceder com o comando quando há erros.
workingDirectory string Especifica o diretório no qual o comando será executado. O padrão é o diretório de trabalho atual do projeto.
customLaunchCommand string Especifica uma personalização de escopo global a ser aplicada antes de executar o comando. Útil para definir variáveis de ambiente, como %PATH%.
customLaunchCommandArgs string Especifica argumentos para customLaunchCommand. (Exige customLaunchCommand.)
env Especifica uma lista de valores-chave de variáveis de ambiente personalizadas. Por exemplo, "myEnv": "myVal"
commands array Especifica uma lista de comandos a serem invocados em ordem.

Exemplo

As seguintes tarefas invocam make.exe quando um makefile é fornecido na pasta e o ambiente Mingw64 foi definido em CppProperties.json, conforme mostrado na referência de esquema CppProperties.json:

 {
  "version": "0.2.1",
  "tasks": [
    {
      "taskLabel": "gcc make",
      "appliesTo": "*.cpp",
      "type": "launch",
      "contextType": "custom",
      "inheritEnvironments": [
        "Mingw64"
      ],
      "command": "make"
    },
    {
      "taskLabel": "gcc clean",
      "appliesTo": "*.cpp",
      "type": "launch",
      "contextType": "custom",
      "inheritEnvironments": [
        "Mingw64"
      ],
      "command": "make",
      "args": ["clean"]
    }
  ]
}

Essas tarefas podem ser invocadas no menu de contexto quando você clica com o botão direito do mouse em um arquivo .cpp no Gerenciador de Soluções.

Propriedades remotas

As tarefas remotas são habilitadas quando você instala a carga de trabalho Desenvolvimento de Linux com C++ e adiciona uma conexão a um computador remoto usando o Gerenciador de Conexões do Visual Studio. Uma tarefa remota executa comandos em um sistema remoto e também pode copiar arquivos para ele.

Quando o tipo de tarefa é remote, estas propriedades estão disponíveis:

Propriedade Type Descrição
remoteMachineName string O nome do computador remoto. Precisa corresponder a um nome de computador no Gerenciador de Conexões.
command string O comando a ser enviado para o computador remoto. Por padrão, os comandos são executados no diretório $HOME no sistema remoto.
remoteWorkingDirectory string O diretório de trabalho atual no computador remoto.
localCopyDirectory string O diretório local a ser copiado para o computador remoto. Usa o diretório de trabalho atual por padrão.
remoteCopyDirectory string O diretório no computador remoto para o qual localCopyDirectory é copiado.
remoteCopyMethod string O método a ser usado para cópia. Valores permitidos: "none", "sftp", "rsync". Rsync é recomendado para projetos grandes.
remoteCopySourcesOutputVerbosity string Valores permitidos: "Normal", "Verbose", "Diagnostic".
rsyncCommandArgs string O padrão é "-t --delete".
remoteCopyExclusionList array Lista de arquivos separados por vírgulas em localCopyDirectory a serem excluídos das operações de cópia.

Exemplo

A tarefa a seguir aparecerá no menu de contexto quando você clicar com o botão direito do mouse em main.cpp no Gerenciador de Soluções. Depende de um computador remoto chamado ubuntu no Gerenciador de Conexões. A tarefa copia a pasta aberta atual no Visual Studio para o diretório sample no computador remoto e, em seguida, invoca g++ para compilar o programa.

{
  "version": "0.2.1",
  "tasks": [
    {
      "taskLabel": "Build",
      "appliesTo": "main.cpp",
      "type": "remote",
      "contextType": "build",
      "command": "g++ main.cpp",
      "remoteMachineName": "ubuntu",
      "remoteCopyDirectory": "~/sample",
      "remoteCopyMethod": "sftp",
      "remoteWorkingDirectory": "~/sample/hello",
      "remoteCopySourcesOutputVerbosity": "Verbose"
    }
  ]
}

propriedades MSBuild

Quando o tipo de tarefa é msbuild, estas propriedades estão disponíveis:

Propriedade Type Descrição
verbosity string Especifica os valores de saída de build do projeto MSBuild verbosityAllowed: "Quiet", "Minimal", "Normal", "Detailed", "Diagnostic".
toolsVersion string Especifica a versão do conjunto de ferramentas para criar o projeto, por exemplo, "2.0", "3.5", "4.0", "Current". O padrão é "Current".
globalProperties objeto Especifica uma lista de pares chave-valor das propriedades globais a serem passadas para o projeto, por exemplo, "Configuration":"Release"
properties objeto Especifica uma lista de pares chave-valor de propriedades adicionais somente de projeto.
targets array Especifica a lista de destinos a serem invocados, em ordem, no projeto. Se nenhum for especificado, o destino padrão do projeto será usado.