قم بإنشاء ملف MSBuild .Targets مخصصًا
-
27-09-2019 - |
سؤال
لديّ مكتبة من مهام MSBUILD المخصصة التي أقوم بتحريرها بانتظام ، وإعادة تمثيل الكود ، وإضافة مهام جديدة وإزالة تلك القديمة. لقد أصبح ألمًا لتحرير ملف .Targets للمزامنة مع ما هو بالفعل في المكتبة ، لذلك كنت أتساءل ، ما هي أفضل طريقة لأتمتة هذا؟
أرغب في حل يتم تشغيله بعد أن تم بناء المكتبة بنجاح ، حتى لا أحصل على أي أخطاء سيئة عند محاولة استدعاء المهام المخصصة من مشاريع أخرى.
لدي بعض الأفكار حول كيفية القيام بذلك ، لكنني أود أن أرى ما يتوصل إليه الآخرون أولاً. :-)
المحلول 2
حسنًا ، لقد وجدت طريقة أجمل لتحقيق ذلك باستخدام مهمة مجتمع MSBuild'س TaskSchema
مهمة:
<TaskSchema Assemblies="@(MyTaskAssembly)"
OutputPath="%(MyTaskAssembly.RootDir)%(MyTaskAssembly.Directory)"
CreateTaskList="true"
IgnoreMsBuildSchema="true"
Includes="Microsoft.Build.Commontypes.xsd"/>
أنا ببساطة أتأكد من أنني قمت باستيراد ملف msbuild.community.tasks.targets ، إنشاء ItemGroup
اسم الشيئ MyTaskAssembly
تحتوي على جميع مجموعات المهام الخاصة بي (صدمة) ، ثم قم بتمسك مكالمة المهمة أعلاه في AfterBuild
هدف مشروعي. حلو! قون
نصائح أخرى
قد يكون لديك ملف .Targets منفصل يحتوي فقط على إشارات إلى مهامك. من جانب واحد ارتبطه في ملف .Targets الرئيسي الخاص بك. من آخر الكتابة فوقها ، تنفذ مهمة مخصصة "سيد" أخرى في الخاص بك AfterBuild
هدف حل المهام. ستحصل هذه المهمة "الرئيسية" على جميع الفصول ITask
من التجميع المبني حديثًا واكتبها إلى ملف .Targets.
ولكن لكي نكون صادقين ، يبدو هذا كأنه مبالغة بالنسبة لي. يجب عليك تحرير ملف .Targets على أي حال لاستخدام مهامك الجديدة. قد تستغرق كتابة هذه المهمة "الرئيسية" ودعمها المزيد من الوقت.
قد أتخيل العديد من الحلول الآلية ، لكن اعتبارات "الوقت المستثمر"/"الوقت المحفوظة بسبب الأتمتة" توقف عن رحلة مخيلتي. =)