如何在tasks.json中使用一个命令构建所有C#项目的VS Code?

9

在VS Code中,我有以下C#项目:

 - Common/Common.csproj
 - WebApi1/WebApi1.csproj
 - WebApi2/WebApi2.csproj

我的 tasks.json 如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/WebApi1/WebApi1.csproj"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

当我选择WebApi1配置文件并点击调试时,我的launch.json会运行build任务(在前面的代码部分中定义),该任务会构建WebApi1.csproj项目以及其依赖项Common.csproj
我的问题是:如何使用同一任务来构建WebApi1和WebApi2(以及WebApi3、WebApi4等),也就是说,使用一个任务来构建存储库中的所有项目。
我尝试过使用"${workspaceFolder}/**/*.csproj",但该语法未被接受。

您可以将所有项目添加到一个解决方案中,并构建整个 *.sln 文件。 - Pavel Anikhouski
@PavelAnikhouski 谢谢你的解决方案。将 "${workspaceFolder}/**/*.csproj" 更改为 "${workspaceFolder}/mysolution.sln" 解决了问题。如果您将您的评论转换为答案,我可以接受它。 - cash
顺便问一下,这个语法${workspaceFolder}/*/**/*.csproj是被接受的吗? - Pavel Anikhouski
@PavelAnikhouski,不,它会给出语法错误。只有构建解决方案文件对我有效。 - cash
1个回答

14
作为一种可能的解决方案,您可以将所有项目放置在一个单一的解决方案中,并在构建任务中指定类似于这样的内容。

作为一种可能的解决方案,您可以将所有项目放置在一个单一的解决方案中,并在构建任务中指定类似于这样的内容

"tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/solution.sln"
            ],
            "problemMatcher": "$msCompile"
        }
    ]

我想补充一下,完全可以省略引用解决方案文件。只要你将路径指向包含解决方案文件的文件夹,就可以顺利进行。(例如)"${workspaceFolder}/<包含解决方案文件的文件夹路径" - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接