Kann ich in MSBuild die String.Replace-Funktion für ein MetaData-Element verwenden?
In MSBuild-v4 kann man Funktionen verwenden (wie string.replace
) auf Eigenschaften. Aber wie kann ich die Funktionen nutzen, auf Metadaten?
Ich würde gerne die string.replace
- Funktion, wie unten:
<Target Name="Build">
<Message Text="@(Files->'%(Filename).Replace(".config","")')" />
</Target>
Leider diese Ausgänge als (nicht ganz das, was ich wollte für):
log4net.Replace(".config","");ajaxPro.Replace(".config","");appSettings.Replace(".config","");cachingConfiguration20.Replace(".config","");cmsSiteConfiguration.Replace(".config","");dataProductsGraphConfiguration.Replace(".config","");ajaxPro.Replace(".config","");appSettings.Replace(".config","");cachingConfiguration20.Replace(".config","");cmsSiteConfiguratio
Irgendwelche Gedanken?
InformationsquelleAutor der Frage willem | 2011-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit ein wenig Trickserei:
Grundsätzlich rufen wir die statische Methode 'Copy' erstellen Sie eine neue Zeichenfolge (aus irgendeinem Grund mag es nicht, wenn Sie nur versuchen
$('%(Filename)'.Replace('.config',''))
), dann rufen Sie die ersetzen-Funktion auf den string.Den vollständigen Wortlaut sollte wie folgt Aussehen:
Edit: MSBuild 12.0 scheint gebrochen zu haben mit der oben beschriebenen Methode. Als alternative, können wir hinzufügen eines neuen Metadaten-Eintrag, um alle vorhandenen
Files
Elemente. Wir führen die ersetzen, die bei der Definition der Metadaten-Element, dann können wir auf die geänderte Wert wie alle anderen Metadaten-Element.z.B.
Ergebnis:
InformationsquelleAutor der Antwort Grant Peters
Diese Funktionen arbeiten in den Eigenschaften nur (wie ich weiß). So erstellen Sie Ziel das für die Bedienung werfen Batchverarbeitung:
Tun, die Sie wirklich brauchen, in Ihrem Beispiel, solche Art von Aufgabe? Ich meine, es gibt MSBuild bekannten Metadaten-Element
EDIT: ich sollte angeben, dass diese Aufgabe Prozesse alle Elemente in @(Dateien).
InformationsquelleAutor der Antwort Sergio Rykov
Ich brauchte, etwas ähnliches zu tun, die folgenden arbeitete für mich.
InformationsquelleAutor der Antwort Mike Coumbe
Für MSBuild 12.0, hier ist eine alternative.
InformationsquelleAutor der Antwort RobV8R
Hab das gleiche problem (außer mit MakeRelative), so dass ich bestanden mit einer anderen Lösung : die Verwendung von guten alten CreateItem, die einen string und verwandeln zu Posten 🙂
InformationsquelleAutor der Antwort Nicolas Dorier
ich glaube nicht, dass Funktionen können Sie direkt mit itemgroups und Metadaten (das wäre einfach)
Jedoch können Sie die Dosierung:
Nehmen Sie die Ideen aus diesem Beitrag:
array-iteration
Ich versuche zu trimmen einer Artikelgruppe zu senden, um ein commandline-tool (ich musste verlieren .server aus dem Dateinamen)
InformationsquelleAutor der Antwort James Woolfenden