2011-01-05 14 views
0

Gibt es trotzdem Änderungen an jedem Element in einer Artikelgruppe? Zum Beispiel, da dieses Produkt:MSBuild Elemente Metadaten analysieren

<_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" /> 

Ich mag entfernen die“.. \ My.Product * Teil Grundsätzlich wir getrenntes Projekt mit MVC Bereichen haben, und in der Verpackung/Deployment (MSDeploy) wir wollen.. . sie in das Hauptprojekt zu kopieren Hier ist, wo die Gruppe verwendet wird:

<FilesForPackagingFromProject Include="%(_CustomAreas.Identity)"> 
    <DestinationRelativePath>Areas\%(relativedir)%(Filename)%(Extension)</DestinationRelativePath> 
</FilesForPackagingFromProject> 

$(relativedir) kommt durch als“.. \ My.Project.Plugin1 \ Areas * *. "und es endet in dem Paket als ZipFileRoot\My.Project.Plugin1\Areas (The .. aus den hartcodierten Bereichen zurück, und dann erstellt es nur den Ordner für die Plugin \ Bereiche), wo ich möchte, dass es am Ende alle in ZipFileRoot\Areas.

Dank Andy

Antwort

0

Der Task RegexReplace (Anmeldeinformationen: Gast/Gast) sollte in der Lage sein, \My.Product.* zu entsprechen und durch eine leere Zeichenfolge zu ersetzen.

So etwas sollte funktionieren: (ungetestet, muß entkommen, um zu überprüfen)

<RegexReplace Input="%(_CustomAreas)" Expression="\\My\.Product\..*" Replacement="" Count="-1"> 
    <Output ItemName="_CustomAreas" TaskParameter="Output" /> 
</RegexReplace> 

Es ist eine wenig Arbeit, um die MSBuild Community Tasks zum Laufen, aber genug gute Sachen für mich dort zu finden es die Mühe wert .

0

Mit MsBuild 4.0 Sie String-Methoden in Ihrem Skript direkt verwenden können (oder Inline-Aufgaben verwenden). Mit dieser Option können Sie Ihre relativedir bearbeiten Sie die My.Project löschen. * Teil.

Sie können Beispiele in diesem Artikel sehen: http://sedodream.com/2010/03/07/MSBuild40PropertyFunctionsPart1.aspx

+0

Ich mag diese Antwort auch, aber mir war nicht klar, wie man mit einer ItemGroup arbeitet. – Andy

0

Elemente in ItemGroups können ein Exclude-Attribut haben, mit dem Sie Elemente angeben können, die weggelassen werden sollen.

+0

Das war nicht das, was ich tun wollte. – Andy