سؤال

لديّ مكتبة من مهام MSBUILD المخصصة التي أقوم بتحريرها بانتظام ، وإعادة تمثيل الكود ، وإضافة مهام جديدة وإزالة تلك القديمة. لقد أصبح ألمًا لتحرير ملف .Targets للمزامنة مع ما هو بالفعل في المكتبة ، لذلك كنت أتساءل ، ما هي أفضل طريقة لأتمتة هذا؟

أرغب في حل يتم تشغيله بعد أن تم بناء المكتبة بنجاح ، حتى لا أحصل على أي أخطاء سيئة عند محاولة استدعاء المهام المخصصة من مشاريع أخرى.

لدي بعض الأفكار حول كيفية القيام بذلك ، لكنني أود أن أرى ما يتوصل إليه الآخرون أولاً. :-)

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

المحلول 2

حسنًا ، لقد وجدت طريقة أجمل لتحقيق ذلك باستخدام مهمة مجتمع MSBuildTaskSchema مهمة:

<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 على أي حال لاستخدام مهامك الجديدة. قد تستغرق كتابة هذه المهمة "الرئيسية" ودعمها المزيد من الوقت.

قد أتخيل العديد من الحلول الآلية ، لكن اعتبارات "الوقت المستثمر"/"الوقت المحفوظة بسبب الأتمتة" توقف عن رحلة مخيلتي. =)

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