Frage

Ich habe eine Liste mit solchen Elementen:

<ItemGroup>
    <ToCompile Include="clojure\core.clj;clojure\set.clj;clojure\zip.clj;clojure\test\junit.clj;"/>
</ItemGroup>

Und ich möchte das in eine Liste wie diese verwandeln:

clojure.core clojure.set clojure.zip clojure.test.junit

Gibt es eine Möglichkeit, dies mit MSBUILD -Transformationen zu tun? Ich habe es versucht, aber ich kann nur den Dateinamen bekommen. Die Erweiterung und der Wurzelpfad, und ich kann das Trennzeichen ändern. Aber nicht die Pfadabscheider.

Wenn nicht, wird eine andere Lösung, die vermieden, benutzerdefinierte Aufgaben vermieden werden.

War es hilfreich?

Lösung

Dies ist ein bisschen kitschig, aber es funktioniert in MSBUILD 4.0+.

<Target Name="Namespaces">
  <PropertyGroup>
    <Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
  </PropertyGroup>
  <Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>

Andere Tipps

Wir können es leicht mit weniger Käse machen:

u003CMessage nText="$([System.String]::Copy('%(ToCompile.Identity)').Replace('.clj','').Replace('','.'))"/>

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top