سؤال

هل هناك على أي حال لتعديل كل عنصر في مجموعة عنصر؟ على سبيل المثال ، بالنظر إلى هذا العنصر:

<_CustomAreas Include="..\My.Project.*\Areas\**\*.*" Condition="'$(AppBuildFolder)' == ''" />

أرغب في إزالة ".. my.product.* جزء. في الأساس لدينا مشروع منفصل يحتوي :

<FilesForPackagingFromProject Include="%(_CustomAreas.Identity)">
    <DestinationRelativePath>Areas\%(relativedir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>

$(relativedir) قادم من خلال ".. my.project.plugin1 المناطق**."وينتهي الأمر في الحزمة ZipFileRoot\My.Project.Plugin1\Areas (يتراجع عن المناطق المتشددين ، ثم ينشئ المجلد للمساعد المناطق) حيث أود أن ينتهي به الأمر بالفعل ZipFileRoot\Areas.

شكرا آندي

هل كانت مفيدة؟

المحلول

ال regexreplace (بيانات الاعتماد: يجب أن تكون مهمة الضيف/الضيف) قادرة على المطابقة \My.Product.* واستبداله بسلسلة فارغة.

شيء من هذا القبيل يجب أن يعمل: (لم يتم اختباره ، تحتاج إلى التحقق من الهروب)

<RegexReplace Input="%(_CustomAreas)" Expression="\\My\.Product\..*" Replacement="" Count="-1">
    <Output ItemName="_CustomAreas" TaskParameter="Output" />
</RegexReplace>

هناك القليل من العمل للحصول على MSBUILD المهام المجتمع الجري ، ولكن ما يكفي من الأشياء الجيدة هناك لأجد أنه يستحق كل هذا الجهد.

نصائح أخرى

باستخدام MSBuild 4.0 ، يمكنك استخدام طرق السلسلة مباشرة في البرنامج النصي (أو استخدام المهام المضمنة). مع هذا الخيار ، يمكنك تعديل yoursivedir الخاص بك لحذف جزء my.project.*.

يمكنك رؤية أمثلة في هذه المقالة: http://sedodream.com/2010/03/07/msbuild40propertyfunctionspart1.aspx

يمكن أن تحتوي العناصر الموجودة في مجموعات العناصر على سمة استبعاد تتيح لك تحديد العناصر التي يجب تركها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top