MSBuild analyse syntaxique des métadonnées de l'article
Question
Y at-il de toute façon de modifier chaque élément dans un groupe d'articles? Par exemple, étant donné ce point:
<_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" />
Je veux supprimer le » .. \ My.Product. * Partie. En fait, nous avons projet distinct contenant des zones MVC, et dans le Package / déploiement (MSDeploy) nous voulons les copier dans le projet principal. Ici est où le groupe est utilisé:
<FilesForPackagingFromProject Include="%(_CustomAreas.Identity)">
<DestinationRelativePath>Areas\%(relativedir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
$(relativedir)
vient à travers comme ".. \ My.Project.Plugin1 \ Régions * *. " et il finit dans le paquet comme ZipFileRoot\My.Project.Plugin1\Areas
(Le .. désiste des zones hardcoded, puis il crée simplement le dossier pour le plug-in zones \) où je voudrais qu'il fait tout en fin ZipFileRoot\Areas
.
Merci Andy
La solution
Le REGEXREPLACE (pouvoirs: guest / guest). tâche devrait être en mesure de faire correspondre \My.Product.*
et le remplacer par une chaîne vide
Quelque chose comme cela devrait fonctionner: (non testé, besoin de vérifier échapper)
<RegexReplace Input="%(_CustomAreas)" Expression="\\My\.Product\..*" Replacement="" Count="-1">
<Output ItemName="_CustomAreas" TaskParameter="Output" />
</RegexReplace>
Il y a un peu de travail obtenir le MSBuild tâches communautaires et en cours d'exécution, mais assez bonnes choses là-dedans pour moi pour le trouver en vaut la peine.
Autres conseils
Avec MsBuild 4.0 Vous pouvez utiliser des méthodes directement cordes dans votre script (ou utilisez des tâches en ligne). Avec cette option, vous pouvez modifier votre relativedir pour supprimer le My.Project. * Partie.
Vous pouvez voir des exemples dans cet article: http://sedodream.com/2010/ 03/07 / MSBuild40PropertyFunctionsPart1.aspx
Les produits dans ItemGroups peuvent avoir un attribut Exclure qui vous permet de spécifier les éléments à omettre.