سؤال

ولدي هدف مخصصة (مجموعة من المهام نسخة، وغيرها) في بلدي بناء أنني بحاجة إلى استدعاء عدة مرات لإحداث تغيير في أماكن مختلفة. ومع ذلك، فإن هذا يعمل فقط في المرة الأولى يطلق عليه، وبعد ذلك TFS بناء يتخطى الهدف المذكور.

وهذه العملية تسير على النحو التالي:

<!-- Copy some files to another location -->
<CallTarget Targets="CopyFiles"></CallTarget>

...

<!-- Copy the above files to yet another location -->
<CallTarget Targets="CopyFiles"></CallTarget>

في سجل بناء، يتضح أن الهدف "CopyFiles" يتم تخطي مرة الثانية تسمى:

Target "CopyLicenseManagerFiles" skipped. Previously built successfully.

لماذا يحدث هذا؟ هل هناك طريقة لإجبار الهدف (أو أي هدف مخصص أنا أكتب) لتشغيل عدة مرات؟

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

المحلول

ويجب أن يتم استدعاء مرة واحدة لكل مثيل MSBuild، لكل مجموعة المعلمة. بناء فريق لا متفرعة مثيلات مستقلة MSBuild في بعض الحالات (على سبيل المثال إذا قمت بتوفير التكوين أكثر من حل واحد). ولكن هذا ربما لا تساعدك.

وأكثر قابلية للتطبيق السيناريو الخاص بك، وإعادة تشغيل MSBuild مهمة إذا كنت اسميها مع مجموعة مختلفة من المعلمات. إذا كنت نسخ مجموعتين مختلفتين من الملفات التي يبدو وكأنه ميزة كنت تبحث عنه.

<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=1" />
<!--  ....  -->
<MSBuild Project=".\CommonStuff.targets" Targets="CopyFiles" Properties="Location=2" />

والحل الآخر هو ريفاكتور وظائف في العمل بدلا من الهدف. في حين لا تزال هناك التعريفي مقابل المراوغات الإجرائية، والمهام تتصرف أقرب إلى ما رأيك في ك "وظيفة" من لغات أكثر دراية.

نصائح أخرى

وهذا حسب التصميم. لا ينبغي أن يعتقد أهداف بأنها "الطرق". MSBuild أكثر التعريفي. لذلك بتتبع الأهداف التي تم تنفيذها وهادف يتخطى تلك التي تم إنجازها حتى الآن.

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