MSBuild: تحويل المسارات إلى مساحات الأسماء
-
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؟ حاولت ولكن لا يمكنني الحصول إلا على اسم الملف ؛ التمديد ومسار الجذر ، ويمكنني تغيير الفاصل. ولكن ليس فواصل المسار.
إذا لم يكن كذلك ، فإن أي حل آخر يتجنب استخدام المهام المخصصة يحظى بتقدير.
المحلول
هذا جبني بعض الشيء ، لكنه يعمل في 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('','.'))"/>
لا تنتمي إلى StackOverflow