我有这样的项目列表:

<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变换来执行此操作?我尝试过,但我只能以文件名获取;扩展和根路径,我可以更改分离器。但不是路径分离器。

如果没有,则感谢任何其他避免使用自定义任务的解决方案。

有帮助吗?

解决方案

这有点俗气,但在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