如何在 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_Api
或 FPH_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
的文档
我在 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_Api
或 FPH_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
的文档