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
,除非需要远程连接。
默认属性
默认属性可用于所有类型的任务:
properties | 类型 | 说明 |
---|---|---|
taskLabel |
string | (必选。)指定在用户界面中使用的任务标签。 |
appliesTo |
string | (必选。)指定可对其执行命令的文件。 支持使用通配符,例如:“”、“.cpp”、“/*.txt” |
contextType |
string | 允许的值:“custom”、“build”、“clean”、“rebuild”。 确定在上下文菜单中显示任务的位置。 默认值为“custom”。 |
output |
string | 指定任务的输出标记。 |
inheritEnvironments |
数组 | 指定从多个源继承的一组环境变量。 可以在 CMakeSettings.json 或 CppProperties.json 等文件中定义变量,并使它们可用于任务上下文。 Visual Studio 16.4:使用 env.VARIABLE_NAME 语法为每个任务指定环境变量。 若要取消设置某个变量,请将它设置为“null”。 |
passEnvVars |
boolean | 指定是否在任务上下文中包含其他环境变量。 这些变量与使用 envVars 属性定义的变量不同。 默认为“true”。 |
启动属性
任务类型为 launch
时,可以使用以下属性:
properties | 类型 | 说明 |
---|---|---|
command |
string | 指定要启动的进程或脚本的完整路径。 |
args |
数组 | 指定传递给命令的参数的逗号分隔列表。 |
launchOption |
string | 允许的值:"None"、"ContinueOnError"、"IgnoreError"。 指定在出现错误时如何继续执行命令。 |
workingDirectory |
string | 指定要在其中运行命令的目录。 默认为项目当前的工作目录。 |
customLaunchCommand |
string | 指定执行命令之前要应用的全局范围自定义。 用于设置环境变量,如 %PATH%。 |
customLaunchCommandArgs |
string | 指定 customLaunchCommand 的参数。 (需要 customLaunchCommand 。) |
env |
指定自定义环境变量的键值列表。 例如 "myEnv": "myVal" | |
commands |
数组 | 指定要按顺序调用的命令的列表。 |
示例
当在文件夹中提供了生成文件,并且在 CppProperties.json 中定义了 Mingw64
环境时,以下任务调用 make.exe,如 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 文件时,可以从上下文菜单中调用这些任务。
远程属性
当使用 Visual Studio 连接管理器安装“使用 C++ 的 Linux 开发”工作负载并添加到远程计算机的连接时,会启用远程任务。 远程任务在远程系统上运行命令,还可以将文件复制到其中。
任务类型为 remote
时,可以使用以下属性:
properties | 类型 | 说明 |
---|---|---|
remoteMachineName |
string | 远程计算机的名称。 必须与“连接管理器”中的计算机名称匹配。 |
command |
string | 要发送到远程计算机的命令。 默认情况下,将在远程系统上的 $HOME 目录中执行命令。 |
remoteWorkingDirectory |
string | 远程计算机上的当前工作目录。 |
localCopyDirectory |
string | 要复制到远程计算机的本地目录。 默认为当前工作目录。 |
remoteCopyDirectory |
string | 远程计算机上要将 localCopyDirectory 复制到其中的目录。 |
remoteCopyMethod |
string | 要用于复制的方法。 允许的值:“none”、“sftp”、“rsync”。 对于大型项目,建议使用 rsync。 |
remoteCopySourcesOutputVerbosity |
string | 允许的值:"Normal"、"Verbose"、"Diagnostic"。 |
rsyncCommandArgs |
string | 默认为“-t --delete”。 |
remoteCopyExclusionList |
数组 | 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
时,可以使用以下属性:
properties | 类型 | 说明 |
---|---|---|
verbosity |
string | 指定 MSBuild 项目生成输出详细值:"Quiet"、"Minimal"、"Normal"、"Detailed"、"Diagnostic"。 |
toolsVersion |
string | 指定用于生成项目的工具集版本,例如“2.0”、“3.5”、“4.0”、“Current”。 默认为“Current”。 |
globalProperties |
object | 指定要传递到项目中的全局属性的键值列表,例如 "Configuration":"Release" |
properties |
object | 指定其他仅项目属性的键值列表。 |
targets |
array | 指定要对项目按顺序调用的目标的列表。 如果未指定,则使用项目的默认目标。 |