Pergunta

Eu tenho lista de itens como este:

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

E eu quero transformar isso em uma lista de itens como este:

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

Existe uma maneira de fazer isso com o MSBuild transforma? Eu tentei, mas só posso obter o nome do arquivo; A extensão e o caminho raiz, e eu posso alterar o separador. Mas não os separadores de caminho.

Caso contrário, qualquer outra solução que evite o uso de tarefas personalizadas é apreciada.

Foi útil?

Solução

Isso é um pouco extravagante, mas funciona no msbuild 4.0+.

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

Outras dicas

Podemos fazer isso facilmente com menos queijo:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top