質問

私はこのようなアイテムのリストを持っています:

<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