2

我有这样的项目清单:

<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 转换来做到这一点?我试过了,但我只能得到文件名;扩展名和根路径,我可以更改分隔符。但不是路径分隔符。

如果没有,任何其他避免使用自定义任务的解决方案都会受到赞赏。

4

2 回答 2

3

我们可以用更少的奶酪轻松做到这一点:

<Message Text="$([System.String]::Copy('%(ToCompile.Identity)').Replace('.clj','').Replace('\','.'))"/ >

于 2011-02-08T00:03:45.660 回答
1

这有点俗气,但它适用于 MSBuild 4.0+。

<Target Name="Namespaces">
  <PropertyGroup>
    <Cheesy>@(ToCompile -> '%(relativedir)%(filename)', ' ')</Cheesy>
  </PropertyGroup>
  <Message Text="$(Cheesy.Replace(`\`, `.`))" />
</Target>
于 2010-10-23T21:12:43.407 回答