سؤال

لدي قائمة بعناصر مثل هذا:

<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