MSBuild: преобразование путей в пространства имен
У меня есть список таких вещей:
<ItemGroup>
<ToCompile Include="clojure\core.clj;clojure\set.clj;clojure\zip.clj;clojure\test\junit.clj;"/>
</ItemGroup>
И я хочу преобразовать это в список элементов вроде этого:
clojure.core clojure.set clojure.zip clojure.test.junit
Есть ли способ сделать это с помощью преобразований MSBuild? Я пытался, но я могу получить только по имени файла; расширение и корневой путь, и я могу изменить разделитель. Но не разделители пути.
В противном случае приветствуется любое другое решение, которое избегает использования пользовательских задач.
2 ответа
Решение
Это немного глупо, но работает в MSBuild 4.0+.
<Target Name="Namespaces">
<PropertyGroup>
<Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
</PropertyGroup>
<Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>