如何在 Azure DevOps VSBuild 任务中指定要构建的项目?

How to specify project to build in Azure DevOps VSBuild task?

我在 Azure DevOps 中有这个 yaml 管道:

variables:
  solution: 'fph.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:

- xxxx

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /t:FPH_Api\FPH_Api_csproj;Rebuild'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

该解决方案包含多个项目,我希望通过提供 DesktopBuildPackageLocation 参数和目标参数 FPH_Api\FPH_Api_csproj;Rebuild,VSBuild 将重建我的 web api 项目(因此将重建其他引用的项目以及)然后自动将构建压缩到 webapp.zip.

但是,我得到了这个错误:

FPH_Api\FPH_Api_csproj" does not exist in the project.

我用下划线替换了 FPH.API\FPH.api.csproj 中的点,因为点是禁止使用的字符,并尝试了几种组合,如 FPH_Api\FPH_ApiFPH_Api,但得到了相同的错误消息。

详细错误显示如下:

Project "D:\a\s\fph.sln" (1) is building "D:\a\s\FPH.Api\FPH.Api.csproj" (2) on node 1 (FPH_Api\FPH_Api_csproj target(s)).
D:\a\s\FPH.Api\FPH.Api.csproj : error MSB4057: The target "FPH_Api\FPH_Api_csproj" does not exist in the project.
Done Building Project "D:\a\s\FPH.Api\FPH.Api.csproj" (FPH_Api\FPH_Api_csproj target(s)) -- FAILED.

看来我做事的方式不对。那么是否可以使用VSBuild任务在解决方案中构建项目并自动压缩输出?

我可以在我的管道中重现你的问题。

要解决此问题,您可以将目标定义到文件夹级别而不是 csproj 文件级别。

例如:

文件结构:(csproj文件在Sample.WebAPI文件夹下)

参数:/t:Sample_WebApi:Rebuild

- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    solution: '$(Parameters.solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"   /t:Sample_WebApi:Rebuild'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

如需了解更多信息,您可以参阅有关 How to: Build specific targets in solutions by using MSBuild.exe

的文档