Msbuild: transformar caminhos em namespaces
-
25-09-2019 - |
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.
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