Visual Studio Code中的任务配置文件tasks.json中的可选任务组tasks详解

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、引言

vscode是支持通过配置可以实现类似Visual C++等IDE开发工具使用菜单和快捷键直接进行程序编译构建的,这样构建的任务可以结合后续的调试配置进行IDE环境的程序调试,不过在之前必须先通过vscode的编译构建任务配置文件tasks.json进行相关设置,当然配置的任务不仅限于编译,还可以做很多后台处理,如老猿就定义了一个任务用于显示vscode中可以使用的预定义变量的值,详细介绍请参考老猿在CSDN的博文《vscode中tasks.json文件使用的预定义变量及国产统信操作系统UOS下配置一个任务显示相关预定义变量的案例》。

二、tasks.json文件中的任务官方定义

在tasks.json配置文件中,可以定义多个任务,每个任务都包含了一些属性,例如任务名称、任务类型、执行命令、命令参数、工作目录、输出等,这些任务还可以指定执行依赖关系。通过配置tasks.json文件,可以方便地在Visual Studio Code中执行这些任务,提高开发效率。

tasks.json最重要的配置当然就是任务,关于任务配置项官方定义请见vscode的官方文档。

任务又分为基本任务和可选的任务组,下面是基本任务的官方相关定义及注释:

interface BaseTaskConfiguration {/*** The type of a custom task. Tasks of type "shell" are executed* inside a shell (e.g. bash, cmd, powershell, ...)*/type: 'shell' | 'process';/*** The command to be executed. Can be an external program or a shell* command.*/command: string;/*** Specifies whether a global command is a background task.*/isBackground?: boolean;/*** The command options used when the command is executed. Can be omitted.*/options?: CommandOptions;/*** The arguments passed to the command. Can be omitted.*/args?: string[];/*** The presentation options.*/presentation?: PresentationOptions;/*** The problem matcher to be used if a global command is executed (e.g. no tasks* are defined). A tasks.json file can either contain a global problemMatcher* property or a tasks property but not both.*/problemMatcher?: string | ProblemMatcher | (string | ProblemMatcher)[];/*** The configuration of the available tasks. A tasks.json file can either* contain a global problemMatcher property or a tasks property but not both.*/tasks?: TaskDescription[];
}

基本任务中的tasks就是可选任务组,可见可选任务组tasks是基本任务下的一个可选的配置项,其类型为TaskDescription类型的一个数组,下面是TaskDescription的官方定义。

/**1. The description of a task.*/
interface TaskDescription {/**2. The task's name*/label: string;/**3. The type of a custom task. Tasks of type "shell" are executed4. inside a shell (e.g. bash, cmd, powershell, ...)*/type: 'shell' | 'process';/**5. The command to execute. If the type is "shell" it should be the full6. command line including any additional arguments passed to the command.*/command: string;/**7. Whether the executed command is kept alive and runs in the background.*/isBackground?: boolean;/**8. Additional arguments passed to the command. Should be used if type9. is "process".*/args?: string[];/**10. Defines the group to which this task belongs. Also supports to mark11. a task as the default task in a group.*/group?: 'build' | 'test' | { kind: 'build' | 'test'; isDefault: boolean };/**12. The presentation options.*/presentation?: PresentationOptions;/**13. The problem matcher(s) to use to capture problems in the tasks14. output.*/problemMatcher?: string | ProblemMatcher | (string | ProblemMatcher)[];/**15. Defines when and how a task is run.*/runOptions?: RunOptions;
}

本文主要介绍可选任务组tasks的相关配置,关于基本任务将在另外的博文中介绍。

三、TaskDescription的配置项详解

从官方文档可见,一个典型的TaskDescription元素包含多种属性,下面逐一介绍:

  1. label:字符串类型,任务名,必选项;
  2. type:任务类型,有3个可选值’shell’ 、‘process’、‘cppbuild’,其中前2个是vscode中安装后即可提供的,‘cppbuild’是安装C++扩展之后支持的,估计如果安排其他语言的扩展,应该还有其他可选类型,关于取值的区别请参考老猿在CSDN的博文《信创之国产浪潮电脑+统信UOS操作系统体验5:visual studio code的任务配置文件tasks.json进行C++编译的任务配置类型type取值及含义》;
  3. command:任务需要执行的具体命令,可以是外部程序或shell命令,如对于C++编译任务,就可能是“gcc”;
  4. isBackground:是否后台运行,还是前台运行;
  5. args:命令执行的参数,相关案例《vscode中tasks.json文件使用的预定义变量及国产统信操作系统UOS下配置一个任务显示相关预定义变量的案例》;
  6. group:用于定义任务属于哪个组,其下子元素kind有3个可选值包括’build’ 、‘test’ 、‘none’,子元素isDefault为布尔类型,表示是否该任务为任务组的缺省任务。
    对于kind为’test’ 、‘none’的情况老猿没有深入研究,对kind为’build’的情况,当选择菜单:终端->运行生成任务 执行生成任务时:
    1>vscode查找是否存在有任务类型为‘build’的任务,如果有且只有一个,则执行该生成任务,否则转下步;
    2>查找是否有isDefault为true的任务,如果有且只有一个,则执行该任务,否则转下步;
    3>其他情况,vscode将列出所有类型为build的任务,由操作人员选择具体执行的任务。
  7. presentation: 用于控制终端面板窗口的输出信息展示,具体请参考老猿在CSDN的博文《Visual Studio Code tasks.json中控制任务执行问题面板显示内容的PresentationOptions介绍》的介绍;
  8. problemMatcher:用于控制任务执行时问题匹配及输出,具体请参考老猿在CSDN的博文《信创之国产浪潮电脑+统信UOS操作系统体验7:VSCode任务tasks.json的问题匹配器problemMatcher详解》的介绍;
  9. runOptions:用于控制任务怎么执行的可选配置项,这个配置项老猿没有进行相关验证测试,从官方说明可以看出包括以下子项:
    1>reevaluateOnRerun:布尔类型,控制通过“重新运行”命令执行任务时如何计算变量。默认值为“true”,表示重新运行任务时将重新评估任务变量。当设置为“false”时,将使用上次运行任务时解析的任务变量值;
    2>runOn:指定任务何时运行,有两个可选值,“default”表示只有通过“运行任务”命令执行任务时,才会运行任务,就是必须手动执行;“folderOpen”表示打开包含的文件夹时即开始运行该任务;
    3>instanceLimit:允许同时运行的任务实例数,默认值为1。

四、一个案例

下面是老猿配置的2个可选任务buildHello1和buildHello2的配置内容:

"tasks": [{"type": "cppbuild","label": "buildHello1","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","-Wall","-Wextra","-O0","${workspaceFolder}/hello.cpp","-o","${fileDirname}/$hello1"],"options": {"cwd": "${fileDirname}"},"problemMatcher": "$gcc","group": {"kind": "build","isDefault": true},"detail": "编译器: /usr/bin/g++"},{"type": "cppbuild","label": "buildHello2","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","-Wall","-Wextra","-O0","${workspaceFolder}/hello2.cpp","-o","${fileDirname}/$hello2"],"options": {"cwd": "${fileDirname}"},"problemMatcher": "$gcc","group": {"kind": "build","isDefault": true},"detail": "编译器: /usr/bin/g++"}]

配置完成后,在终端菜单选择“运行生成任务…”时可以看到两个任务供选择:
在这里插入图片描述

四、小结

本文介绍了tasks.json中任务配置选项的可选任务组tasks子配置项,tasks的类型是TaskDescription,文章介绍了TaskDescription的详细内容和用途。tasks配置项配置的任务是大多数任务的配置方式,理解相关子配置项的内容对于更好地配置vscode的任务有重要作用。

参考资料

  1. vscode用法;
  2. Additional information for Visual Studio Code tasks
  3. Variables Reference–Visual Studio Code supports variable
  4. Integrate with External Tools via Tasks
写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于vscode任务配置的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12. IO

1.File类 • File 类代表与平台无关的文件和目录。 • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 1).File的常用方法 在这里插入图片描述 2).遍历给定目录所有文件 …

MySQL增删改查

查询数据 MySQL 数据库使用 SQL SELECT 语句来查询数据。以下为在 MySQL 数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] 查询语句中你可以使用一个或者多个表,表之间使用…

联想笔记本如何安装Vmware ESXi

环境: Vmware ESXi 8.0 Vmware ESXi 6.7 联想E14笔记本 问题描述: 联想笔记本如何安装Vmware ESXi 解决方案: 1.官网下载镜像文件 https://customerconnect.vmware.com/en/downloads/search?queryesxi%208 下载 2.没有账户注册一个 …

什么时候使用匿名类,匿名类解决了什么问题?为什么需要匿名类 ?

匿名类通常在以下场景下使用: 一次性使用: 当你需要创建一个类的实例,但该类只在一个地方使用,而不打算在其他地方重复使用时,可以考虑使用匿名类。 简化代码: 当创建一个小型的、一次性的类会让代码更简洁…

浅析特征增强个性化在CTR预估中的经典方法和效果对比

在CTR预估中,主流都采用特征embeddingMLP的方式,其中特征非常关键。然而对于相同的特征,在不同的样本中,表征是相同的,这种方式输入到下游模型,会限制模型的表达能力。为了解决这个问题,CTR预估…

【每日一题】用邮票贴满网格图

文章目录 Tag题目来源题目解读解题思路方法一:二维前缀和二维差分 写在最后 Tag 【二维前缀和】【二维差分】【矩阵】【2023-12-14】 题目来源 2132. 用邮票贴满网格图 题目解读 在 01 矩阵中,判断是否可以用给定尺寸的邮票将所有 0 位置都覆盖住&…

智能优化算法应用:基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.…

GeoTrust OV证书

当谈到网站安全性和可信度时,GeoTrust OV证书是一个备受推崇的选择。作为一家备受尊敬的数字证书颁发机构,GeoTrust以其卓越的品牌声誉和高质量的产品而闻名于世。GeoTrust OV证书提供了一系列的安全功能,同时还具有出色的性价比,…

系统级基础信号知识【Linux】

目录 一,什么是信号 进程面对信号常见的三种反应概述 二,产生信号 1.终端按键产生信号 signal 2. 进程异常产生信号 核心转储 3. 系统调用函数发送信号 kill raise abort 小结: 4. 由软件条件产生 alarm 5. 硬件异常产生信号…

WEB服务器介绍

Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件,即文WEB服务器件类型。服务器使用HTTP进行信息交流&#xff0c…

Java之异常

一、异常是什么 程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 注意:异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行. 二、异常体系 三、异常的分类 (一)、编译时…

明懿金汇应对气候变化:投资于绿色未来

2023年,面对全球范围内的气候变化和环境保护挑战,明懿金汇积极响应,展现出其在可持续金融领域的领导力。作为一家前沿的金融科技公司,明懿金汇不仅将环保理念融入到其金融产品和服务中,更通过直接的行动和投资&#xf…

【Python】conda镜像配置,.condarc文件详解,channel镜像

1. conda 环境 安装miniconda即可,Miniconda 安装包可以到 http://mirrors.aliyun.com/anaconda/miniconda/ 下载。 .condarc是conda 应用程序的配置文件,在用户家目录(windows:C:\users\username\),用于…

用提问的方式来学习:冯·诺伊曼体系结构与操作系统OS

学习冯诺伊曼体系结构之前,我们要本着两个问题来学习: 什么是冯诺伊曼体系结构?为什么要有冯诺伊曼体系结构? 一、冯诺伊曼体系结构 1. 什么是冯诺伊曼体系结构? 那我们就先来回答一下什么是冯诺伊曼体系结构&#x…

Python中的TesserOCR:文字识别的全方位指南

更多资料获取 📚 个人网站:ipengtao.com 文字识别在图像处理领域中起到了至关重要的作用,而TesserOCR(Tesseract OCR的Python封装)为开发者提供了一个强大的工具,使得文字识别变得更加便捷。本文将通过详细…

Matlab示例-Examine 16-QAM Using MATLAB学习笔记

​工作之余学习16-QAM 写在前面 网上看到许多示例,但一般都比较难以跑通。所以,还是老方法,先将matlab自带的例子研究下。 Examine 16-QAM Using MATLAB Examine 16-QAM Using MATLAB 或者,在matlab中,键入&#x…

C语言数据结构-二叉树的入门

文章目录 0 碎碎念1 二叉树的概念和结构1.1 概念和特点1.2 结构1.3 特殊的二叉树1.4 二叉树的存储与性质1.5 前序、中序和后序 2 简单二叉树的实现2.1 定义数据结构类型2.2 前序、中序和后序接口的实现2.3 二叉树中节点的个数2.4 叶子节点的个数 3 完整代码块3.1 BinaryTree.h3…

「神印王座」皓晨带伙伴参与伊老试炼,12魔神攻打震南关,高能

Hello,小伙伴们,我是拾荒君。 时光匆匆,国漫《神印王座》的第85集已经与大家如约而至。想必各位观众都已经迫不及待地观看了这一集,其中,龙皓晨向光之晨曦团的成员们揭示了永恒之塔的秘密,并带领他们深入其中。 永恒之…

nginx服务前端访问查看无响应的问题

问题 nginx 启动之后,前端访问无数据,F12 查看,提示挂起。 以为是配置问题,查看配置文件,未发现配置的有问题。 原因 通过查看配置文件,发现转发的服务地址为127.0.0.1,手动ping 127.0.0.1&a…

如何部署Portainer容器管理工具+cpolar内网穿透实现公网访问管理界面

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 本文主要介绍如何本地安装Portainer并结合内网穿透工具实现任意浏览器远程访问管理界面。Portainer 是一个轻量级…