Pregunta

Tengo una lista de elementos como este:

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

Y quiero transformar eso en una lista de elementos como este:

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

¿Hay alguna manera de hacer esto con las transformaciones de msbuild? Lo intenté pero solo puedo llegar al nombre del archivo; La extensión y la ruta de la raíz, y puedo cambiar el separador. Pero no los separadores de ruta.

Si no, se aprecia cualquier otra solución que evite el uso de tareas personalizadas.

¿Fue útil?

Solución

Esto es un poco cursi, pero funciona en MSBuild 4.0+.

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

Otros consejos

Podemos hacerlo fácilmente con menos queso:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top