我有一个庞大的项目,分布在多个源目录中,该项目是在过去 15 年中使用 eclipse 开发的,具有自定义外部工具配置,可以从源目录内任何位置的 build.xml 文件启动 ant 任务(我知道,这是一团糟!)。
由于日常工作主要是基于 xml 和 JavaScript,我认为 VSCode 作为一个轻量级替代方案(因为 eclipse 无法在不超过 HeepSpace 的情况下处理大型 xml 文件)。在我看来,任务运行器是将 ant 构建集成到编辑器中的好方法,它们也被宣传为能够运行 ant 构建:
例如 Make、Ant、Gulp、Jake、Rake 和 MSBuild 等。
我可以使用根文件夹中的 build.xml 运行 ant 构建。然而,这并不是该项目的结构。
有没有办法从工作空间根目录以外的目录运行任务命令(在我的例子中是ant) ?
我想到了类似 git 的GIT_WORK_TREE环境变量或执行两个命令的方法(例如cd {{build.xml folder}} && ant)。我当前的tasks.json是
{
"version": "0.1.0",
"command": "ant",
"isShellCommand": true,
"showOutput": "silent",
"args": ["all", "jar"],
"promlemMatcher": "" // I'm also not sure what to put here,
// but that's …Run Code Online (Sandbox Code Playgroud) 概括
我正在尝试在 docker 映像 (Ubuntu) 中调试 C++ 程序,同时在我的主机系统 (OS X) 上使用 VSCode 作为 IDE。在对 gdbserver 和 VSCode 任务进行各种修补后,我现在能够成功运行调试器,但是每次启动调试会话时,VSCode 都会挂起 10 秒,然后报告错误消息:
“无法跟踪 preLaunchTask 'docker gdb'。”
如果我点击这个错误,我可以正常地完美调试,但是每次调试时都要等待 10 秒,这让我非常沮丧。
细节
我的 Docker 映像是通过以下方式启动的,因此我的源代码安装在“app”目录中。安全设置是我在 Stack Overflow 上的其他地方找到的,需要允许 gdbserver:
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v "$(pwd):/app" -w "/app" -p 9091:9091 {imageName} /bin/bash
Run Code Online (Sandbox Code Playgroud)
当我在主机上启动调试会话时,我使用这个启动命令,将本地 gdb 连接到 docker gdbserver,并运行一个预启动任务:
{
"version": "0.2.0",
"configurations": [
{
"name": "Remote unit test",
"type": "cppdbg",
"request": "launch",
"program": "./tests/ConfigurationTest.cpp_TestRunner",
"miDebuggerServerAddress": "localhost:9091",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": …Run Code Online (Sandbox Code Playgroud) 我有一个静态网站(即只有 html 和客户端 JavaScript),在本地调试时使用 python 提供服务。我有一个 VSCode 任务将正确启动 python,并尝试将该任务设置为preLaunchTaskChrome调试器启动任务。理想的行为是,每当我开始调试serve以下任务时,都会确保站点正在运行。
如果我正确理解后台任务,可以设置beginsPattern和endsPattern来表示状态变化。
我期待当 python 回显时
在 0.0.0.0 端口 8000 ( http://0.0.0.0:8000/ ) 上提供 HTTP 服务...
下面将向启动任务发出信号,表明它已经开始stdout。problemMatcher相反,启动任务会永远等待,直到任务的 shell 命令终止后才会继续。
可以配置任务来实现这种行为吗?
启动配置
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8000",
"webRoot": "${workspaceFolder}/webroot",
"preLaunchTask": "serve"
}
]
}
Run Code Online (Sandbox Code Playgroud)
服务任务
{
"version": "2.0.0",
"tasks": [
{
"label": "serve",
"type": "shell",
"command": "python3 -m …Run Code Online (Sandbox Code Playgroud) 从命令行编译时,我可以指定
tsc -b --verbose
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何在 vs 代码中配置默认构建任务来做同样的事情。我在tsconfig.json或tasks.json 中找不到任何相关条目
我处理大型 html 文件,我想将它们分成单独的文件。这样做的过程非常繁琐,因为它需要复制代码,创建一个新文件,将其粘贴到新文件中,然后选择一个文件夹和一个新名称来保存它。
VS Code 是否有内置的快捷方式、宏或扩展来简化此操作?
我在 ubuntu16 上运行 VScode,并测试 helloworld.cpp。一开始,我遍历了所有,然后我尝试编辑tasks.json。我得到了错误。好的,我用回滚取消了所有更改,它显示错误 aagin。我删除了 helloworld 文件夹,然后再试一次 helloworld。在终端 > 配置默认构建任务并构建后,错误再次显示。怎么了?它来自 vscode。
错误信息:
执行任务:/usr/bin/g++ -g /home/liwenz/helloworld/.vscode/tasks.json -o /home/liwenz/helloworld/.vscode/tasks <
/usr/bin/ld:/home/liwenz/helloworld/.vscode/tasks.json:文件格式无法识别;视为链接器脚本 /usr/bin/ld:/home/liwenz/helloworld/.vscode/tasks.json:1: 语法错误 collect2: 错误: ld 返回 1 退出状态终端进程以退出代码终止:1
任务文件
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
Run Code Online (Sandbox Code Playgroud)
}
helloworld 链接是https://code.visualstudio.com/docs/cpp/config-linux
我正在尝试使用适用于 VSCode 的 Code Runner 扩展运行一个简单的程序“primeRange.cpp”。
我在VSCode 中选择了我的默认终端作为git bash,但是当我点击右上角的Run时,它会将命令发送到 bash 以使用 g++ 编译器运行程序,但是我收到错误,因为没有这样的文件或目录,当有存在具有给定名称的目录。
我怎样才能解决这个问题?
当我在代码运行器上按运行时,如何自定义要在 bash 上运行的命令?
我想将命令设置为:
cd "c:\\Users\\Tushar\\Desktop\\contests\\Practice" && g++ primeRange.cpp -o primeRange && "c:\\Users\\Tushar\\Desktop\\contests\\Practice\\primeRange"
Run Code Online (Sandbox Code Playgroud)
或者
cd "c:\Users\Tushar\Desktop\contests\Practice" && g++ primeRange.cpp -o primeRange && "c:\Users\Tushar\Desktop\contests\Practice\primeRange"
Run Code Online (Sandbox Code Playgroud)
如果我在 bash 上手动执行上述任何一个命令,那么它就可以工作。
所以我基本上想知道如何在路径中包含可执行文件名:
"c:\Users\Tushar\Desktop\contests\Practice\primeRange"
Run Code Online (Sandbox Code Playgroud)
而不是在引号之后:
"c:\Users\Tushar\Desktop\contests\Practice\"primeRange
Run Code Online (Sandbox Code Playgroud)
我已将 settings.json 中的路径更新为:
"code-runner.executorMap": {
"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && \"./$fileNameWithoutExt.exe\""
},
Run Code Online (Sandbox Code Playgroud)
解决
修复 1:
将 …
是否有可能使用单独的参数和选项将多个 shell 命令按顺序添加到 Visual Studio Code 任务?我设法使用&&将 then 链接到单个命令来执行多个命令,就像在任何 Linux shell 中一样。但我想,必须有更好的方法来做到这一点。
我在 Ubuntu 18.04 LTS 上使用 Visual Studio Code。
以下是我目前如何在 task.json 文件中链接构建任务的命令以使用 cmake 构建 C++ 项目的示例:
{
"tasks": [
{
"type": "shell",
"label": "build",
"command": "cd ${workspaceFolder}/build && cmake .. && make clean && make",
"group": {
"kind": "build",
"isDefault": true
}
}
],
"version": "2.0.0"
}
Run Code Online (Sandbox Code Playgroud)
更新: - - - - - - - - - - - - - - - - - - - …
我有一个launch.json如下所示的调试启动配置 ( )。
{
"version": "0.2.0",
"configurations": [
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"preLaunchTask": "Pre Debug Task",
"postDebugTask": "Stop Watch Styles",
"args": ["${relativeFile}"],
"runtimeArgs": ["--nolazy", "-r", "ts-node/register"],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector",
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的任务配置(tasks.json)就像
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "next:copy",
"label": "Copy Files",
"problemMatcher": []
},
{
"type": "npm",
"script": "styles:tsw",
"label": "Watch Styles",
"problemMatcher": [],
},
{
"label": "Pre Debug Task",
"isBackground": true,
"dependsOn" …Run Code Online (Sandbox Code Playgroud) 我正在使用 TypeScript,并且经常不得不tsc-watch手动启动任务。根据博客 VSCode v1.30+ 可以在打开文件夹时自动运行任务,但这对我不起作用(v1.33.1) - 我打开我的文件夹但没有运行任何任务。

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"isBackground": true,
"problemMatcher": [
"$tsc"
]
},
{
"type": "typescript",
"label": "TypeScript Compiler Watcher Thingy...",
"tsconfig": "tsconfig.json",
"option": "watch",
"problemMatcher": [
"$tsc-watch"
],
"runOptions": {
"runOn": "folderOpen"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:也试过这个扩展,它也没有启动任务。