在 VS Code 自定义中使用 args 的问题 tasks.json

Problem of using args in VS Code custom tasks.json

因此,在 .vscode/tasks.json 中的任务数组中,我有一个任务:

{
      "label": "buildReleaseIos",
      "type": "shell",
      "command": "flutter build ios -t lib/main_prod.dart --dart-define=DART_DEFINE_APP_NAME=App Name --dart-define=DART_DEFINE_APP_SUFFIX=.myapp"
}

这个任务是有效的,我可以正常执行它。

问题是,如果我将 --dart-define 从命令移动到 args 数组(我认为这是更好的做法),如下所示:

{
      "label": "buildReleaseIos",
      "type": "shell",
      "command": "flutter build ios -t lib/main_prod.dart",
      "args": [
        "--dart-define=BCP_DART_DEFINE_APP_NAME=App Name",
        "--dart-define=BCP_DART_DEFINE_APP_SUFFIX=.myapp",
      ]
}

出现这个错误:

> Executing task: 'flutter build ios -t lib/main_prod.dart' '--dart-define=DART_DEFINE_APP_NAME=App Name' --dart-define=DART_DEFINE_APP_SUFFIX=.myapp <

/bin/bash: flutter build ios -t lib/main_prod.dart: No such file or directory
The terminal process "/bin/bash '-c', ''flutter build ios -t lib/main_prod.dart' '--dart-define=DART_DEFINE_APP_NAME=App Name' --dart-define=DART_DEFINE_APP_SUFFIX=.myapp'" terminated with exit code: 127.

但是,我在 launch.json 中也有类似的 args 用法,效果很好:

{
      "name": "Flutter Debug Prod",
      "request": "launch",
      "type": "dart",
      "program": "lib/main_prod.dart",
      "args": [
        "--dart-define=DART_DEFINE_APP_NAME=App Name",
      ],
}

也许我弄错了 argstasks.json 中的工作原理?你能告诉我如何正确使用 args 吗?

谢谢

bash 中的翻译应该类似于

"/bin/bash '-c', 'flutter' 'build' 'ios' '-t' 'lib/main_prod.dart' '--dart-define=DART_DEFINE_APP_NAME=App Name' '--dart-define=DART_DEFINE_APP_SUFFIX=.myapp'

这意味着您需要 program 中的 flutter 以及 args 中的所有其他元素作为单独的元素,或者您可以将所有内容都放在 program 中,然后使用空格引用可能有点不稳定。