当存在 DeployOnBuild 和 PublishProfile 参数时,MSBuild 会跳过一些任务

MSBuild skips some tasks when DeployOnBuild and PublishProfile parameters are present

当我使用 msbuild 从命令行构建一个 Web 项目并且没有特殊参数时,它似乎构建得很好,包括调用 nswag 任务来构建 TS 文件。

当我使用 /p:DeployOnBuild=true 参数和 /p:PublishProfile 参数集构建相同的 Web 项目时,根本没有调用 nswag,并且构建失败,因为 TS none文件已构建。

使用DeployOnBuild参数不是加法吗? csproj 文件中指定的任何构建任务是否仍应执行?

使用 MSBuild 的结构化日志查看器我能够确定为什么 MSBuild 在 DeployOnBuild=true.

时似乎跳过了我的 csproj 文件中指定的 NSwag 任务

构建顺序很重要!

在我们的项目中,我们在构建时构建一个客户端 TS 文件,然后在最后 运行 yarn tsc 构建所有 JS 文件。

当我们添加 DeployOnBuild=true 时,在构建过程的早期,它会尝试将 JS 文件复制到包文件夹中。但是由于尚未构建客户端 TS 文件并从中创建 JS 文件,因此构建失败,甚至从未进入 NSwag 命令。