MSBUILD: Преобразование путей к пространствам имен

StackOverflow https://stackoverflow.com/questions/4005998

  •  25-09-2019
  •  | 
  •  

Вопрос

У меня есть список таких предметов:

<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 Transforms? Я пытался, но я могу получить только на имя файла; Расширение и корневой путь, и я могу изменить сепаратор. Но не разделители пути.

Если нет, любое другое решение, которое избегает использования пользовательских задач, ценится.

Это было полезно?

Решение

Это немного сырная, но работает в MSBuild 4.0+.

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

Другие советы

Мы можем сделать это легко с меньшим количеством сыра:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top