Je suis en train de construire un artefact aspnetcore pour une solution avec plusieurs projets web à l'intérieur. La tâche de publication par défaut de netcore a une case à cocher "Publier les projets web" qui trouve tous les projets contenant des fichiers web.config ou des dossiers wwwroot, mais mes projets WebApi n'en ont pas du tout besoin. Vous pouvez désactiver cette case à cocher et fournir les chemins des projets que vous souhaitez publier. Chaque projet doit être fourni sur une ligne séparée.
Donc, si je modifie ce paramètre dans la fenêtre des propriétés de la tâche, tout va bien, car il y a un éditeur multiligne qui se comporte comme prévu. Mais je veux déplacer la liste des projets dans des variables, là où toutes les autres configurations sont stockées. Cependant, l'éditeur de variable est sur une seule ligne.
J'ai décidé de mettre les noms de projet dans une variable avec un délimiteur ";" et d'écrire une tâche powershell qui construit correctement les chemins pour la tâche de publication :
$projects = '$(PublishProjects)'
$result = ( $projects.Split(@(';'), [System.StringSplitOptions]::RemoveEmptyEntries) | %{ ('**\' + $_.Trim() + '.csproj') } ) -join "`n"
Write-Host "##vso[task.setvariable variable=PublishProjectsPath]$result"
Malheureusement, cela provoque le réglage de la valeur de PublishProjectsPath à seulement premier projet, car tous les chemins de projet sauf le premier sont imprimés sur leur propre ligne sans ##vso... et donc azure les ignore efficacement.
Y a-t-il un moyen de définir correctement une variable de pipeline à partir d'un script ? Je ne peux pas utiliser azure-pipelines.yml car azure ne prend pas en charge gitlab :(