Справочник по схеме tasks.vs.json (C++)

Чтобы сообщить Visual Studio о том, как создать исходный код в проекте "Открытая папка", добавьте файл tasks.vs.json. В нем можно определить любую произвольную задачу, а затем вызывать ее из контекстного меню обозревателя решений. Проекты CMake не используют этот файл, так как все команды сборки указываются в файле CMakeLists.txt. Для систем сборки, отличных от CMake, в файле tasks.vs.json можно задавать команды сборки и вызывать скрипты сборки. Общие сведения об использовании tasks.vs.json см. в разделе Настройка задач сборки и отладки для режима разработки "Открытая папка".

Задача имеет свойство type, которое может иметь одно из четырех значений: default, launch, remote или msbuild. В большинстве задач следует использовать launch, если только не требуется удаленное подключение.

Свойства по умолчанию

Свойства по умолчанию доступны для всех типов задач:

Свойство Тип Описание:
taskLabel строка (Обязательно.) Указывает метку задачи, используемую в пользовательском интерфейсе.
appliesTo строка (Обязательно.) Указывает, какие файлы можно выполнить с помощью команды. Поддерживается использование подстановочных знаков, например: "", ".cpp", "/*.txt"
contextType строка Допустимые значения: "custom", "build", "clean", "rebuild". Определяет, где в контекстном меню будет отображаться задача. По умолчанию имеет значение "custom".
output строка Указывает выходной тег для задачи.
inheritEnvironments array Задает набор переменных среды, унаследованных из нескольких источников. Можно определить переменные в файлах, например CMakeSettings.json или CppProperties.json, и сделать их доступными для контекста задачи. Visual Studio 16.4.: укажите переменные среды на основе каждой задачи с помощью синтаксиса env.VARIABLE_NAME . Чтобы отменить переменную, задайте для нее значение NULL.
passEnvVars boolean Указывает, следует ли включать дополнительные переменные среды в контекст задачи. Эти переменные отличаются от тех, которые определены с помощью свойства envVars. Значение по умолчанию: "true".

Свойства запуска

Если тип задачи — launch, доступны следующие свойства:

Свойство Тип Описание:
command строка Указывает полный путь к запускаемому процессу или скрипту.
args array Задает разделенный запятыми список аргументов, передаваемых команде.
launchOption строка Допустимые значения: "None", "ContinueOnError", "IgnoreError". Указывает, как продолжить выполнение команды при возникновении ошибок.
workingDirectory строка Указывает каталог, в котором будет выполняться команда. По умолчанию используется текущая рабочая папка проекта.
customLaunchCommand строка Задает глобальную настройку области, применяемую перед выполнением команды. Полезно для задания переменных среды, таких как %PATH%.
customLaunchCommandArgs строка Указывает аргументы для customLaunchCommand. (Требует customLaunchCommand.)
env Указывает список значений ключа для настраиваемых переменных среды. Например, "myEnv": "myVal"
commands array Указывает список команд для вызова по порядку.

Пример

Следующие задачи вызывают make.exe, когда в папке содержится файл makefile, а среда Mingw64 определена в файле CppProperties.json, как указано в справочнике по схеме 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"]
    }
  ]
}

Эти задачи можно вызвать из контекстного меню, если щелкнуть правой кнопкой мыши файл CPP в обозревателе решений.

Удаленные свойства

Удаленные задачи включаются при установке разработки Linux с рабочей нагрузкой C++ и добавлении подключения к удаленному компьютеру с помощью диспетчера подключений Visual Studio. Удаленная задача запускает команды в удаленной системе и также может копировать в нее файлы.

Если тип задачи — remote, доступны следующие свойства:

Свойство Тип Описание:
remoteMachineName строка Имя удаленного компьютера. Должно соответствовать имени компьютера в диспетчере подключений.
command строка Команда для отправки на удаленный компьютер. По умолчанию команды выполняются в каталоге $HOME в удаленной системе.
remoteWorkingDirectory строка Текущий рабочий каталог на удаленном компьютере.
localCopyDirectory строка Локальный каталог для копирования на удаленный компьютер. По умолчанию используется текущий рабочий каталог.
remoteCopyDirectory строка Каталог на удаленном компьютере, в который копируется localCopyDirectory.
remoteCopyMethod строка Метод, используемый для копирования. Допустимые значения: "none", "sftp", "rsync". Для больших проектов рекомендуется использовать rsync.
remoteCopySourcesOutputVerbosity строка Допустимые значения: "Normal", "Verbose", "Diagnostic".
rsyncCommandArgs строка По умолчанию используется значение "-t --delete".
remoteCopyExclusionList array Разделенный запятыми список файлов в localCopyDirectory, исключаемых из операций копирования.

Пример

Следующая задача появится в контекстном меню при щелчке правой кнопкой мыши файла Main.cpp в обозревателе решений. Она зависит от удаленного компьютера, который называется ubuntu в диспетчере подключений. Задача копирует текущую открытую папку в Visual Studio в каталог sample на удаленном компьютере, а затем вызывает g++ для сборки программы.

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

свойства MSBuild

Если тип задачи — msbuild, доступны следующие свойства:

Свойство Тип Описание:
verbosity строка Указывает выходные значения выходных данных сборки проекта MSBuildAllowed: "Тихий", "Минимальный", "Обычный", "Подробный", "Диагностика".
toolsVersion строка Указывает версию набора инструментов для сборки проекта, например "2.0", "3.5", "4.0", "Current". Значение по умолчанию: "Current".
globalProperties объект Указывает список ключевых значений глобальных свойств для передачи в проект, например "Configuration":"Release"
properties объект Указывает список "ключ-значение" свойств только дополнительного проекта.
targets array Указывает список целевых объектов для вызова по порядку в проекте. Если значение не указано, используется целевой объект проекта по умолчанию.