我可以在Azure Pipelines中使用multiline YAML string吗?
使用ASP.NET Core(.NET Framework)模板,我尝试对msbuildArgs
进行多重处理,但这没用。
- 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"'
'/p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
MSBUILD:错误MSB1008:只能指定一个项目。
开关:'/ p:DeployOnBuild = true
正在审核string reference documentation,但与此主题无关。
答案 0 :(得分:1)
Azure管道中的多行字符串
Shayki Abramczyk指出了此错误的关键。
只需在msbuildArgs的开头和结尾放入一个
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
无需为每个MSBuild参数进行配置
作为测试,遵循YAML为我工作:
'
注意:变量- task: VSBuild@1
displayName: 'Build solution YourSolution'
inputs:
solution: $(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"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
应该指向特定的解决方案$(solution)
或项目.sln
文件而不是.csproj
。如果您的存储库中还有其他解决方案,则可能会收到错误**\*.sln
。
更新:
但是我不希望像您提供的答案那样超长的运行时间。一世 想跨多行!
如果您不想像MSBuild参数中那样超长运行时间,可以直接将其拆分,但要注意缩进,例如:
Only one project can be specified
作为测试,它可以正常工作。
希望这会有所帮助。
答案 1 :(得分:0)
您可以将'
放在msbuildArgs
的开头和结尾:
- task: VSBuild@1
displayName: 'Build solution **\*.sln'
inputs:
vsVersion: latest
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package
/p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true'
答案 2 :(得分:0)
我总是这样使用YAML block chomping operator
msbuildArgs: >-
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:SkipInvalidConfigurations=true
/p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip"
/p:DeployIisAppPath="Default Web Site"
效果很好,使事情变得清晰整洁