MSBUILD: trasforma percorsi in spazi dei nomi
-
25-09-2019 - |
Domanda
Ho un elenco di elementi come questo:
<ItemGroup>
<ToCompile Include="clojure\core.clj;clojure\set.clj;clojure\zip.clj;clojure\test\junit.clj;"/>
</ItemGroup>
E voglio trasformarlo in un elenco di elementi come questo:
clojure.core clojure.set clojure.zip clojure.test.junit
C'è un modo per farlo con le trasformazioni MSBuild? Ho provato ma posso solo ottenere il nome del file; L'estensione e il percorso della radice, e posso cambiare il separatore. Ma non i separatori del percorso.
In caso contrario, è apprezzata qualsiasi altra soluzione che evita l'uso di attività personalizzate.
Soluzione
Questo è un po 'di formaggio, ma funziona in MSBuild 4.0+.
<Target Name="Namespaces">
<PropertyGroup>
<Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
</PropertyGroup>
<Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>
Altri suggerimenti
Possiamo farlo facilmente con meno formaggio:
u003CMessage nText="$([System.String]::Copy('%(ToCompile.Identity)').Replace('.clj','').Replace('','.'))"/>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow