سؤال

أقوم بتشغيل حل موقع ويب ASP.NET مع بعض المشاريع الأخرى فيه.أعلم أن مشاريع MSBuild قادرة على ذلك، لكن هل هذه هي الطريقة الأفضل؟هل من السهل إنشاؤها؟هل nAnt أو CruiseControl.NET أو أي حل آخر أفضل؟

عندما أقوم بإنشاء الموقع (باستخدام مشاريع نشر الويب)، هل يمكنني أتمتة جزء من البناء بحيث لا ينسخ مجلدات معينة من المشروع إلى مجلد الإصدار؟على سبيل المثال، لدي مجلدات تحتوي على فهارس بحث محلية وصور وجزء محتوى آخر من المجلد، لكنني لا أحتاج إليها مطلقًا أو أقوم بتحميلها عند نشر المشروع.

أنا أتطلع أيضًا إلى هذا النوع من الحلول لزيادة أرقام الإصدار والإصدار تلقائيًا.

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

المحلول

فيما يلي مثال لمشروع نشر الويب الذي يقوم ببرمجة هذا النوع من المهام في ملف .wdproj:

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

هذا من شأنه أن يسمح لك بحذف مجلد.

(أظن أنه إذا كنت تريد عدم نسخ المجلد على الاطلاق, ، سيكون ملف الحل هو المكان المناسب لتحديد ذلك، على الرغم من أنني لم أضطر إلى استخدام ذلك.)

نصائح أخرى

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

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

يمكنك إلغاء التعليق على الأهداف التي تريدها (على سبيل المثال."AfterBuild") وأدخل المهام الضرورية هناك لتنفيذ أنشطة ما بعد البناء المتكررة.

يمكنك تعيين خاصية Build Action/Copy to Output Directory على الملفات الفردية (حدد الملف واضغط على F4 لفتح نافذة الخصائص) للتحكم في ما يحدث لها أثناء الإنشاء، ولكن ليس للمجلدات.من المحتمل أن يتم ذلك تلقائيًا باستخدام مهمة إنشاء (مسبقة) إذا كنت لا تريد القيام بذلك يدويًا.

وبدلاً من ذلك، يمكنك استبعاد هذه المجلدات من المشروع (انقر بزر الماوس الأيمن ثم "استبعاد من المشروع")؛ستظل موجودة ("إظهار كافة الملفات" في مستكشف الحلول)، لكن لن يتم تضمينها عند إنشاء المشروع.

CruiseControl.NET يحل مشكلة مختلفة (التكامل المستمر) ...ومع ذلك، لقد حققت نجاحًا كبيرًا مع NAnt فيما يتعلق بما تطلبه على وجه التحديد.هناك منحنى للتعلم، ولكن بمجرد أن تصبح ماهرًا، سوف تتساءل كيف تمكنت من الاستمرار بدونه.

بالإضافة إلى نصيحة @Fredrik حول تعيين عناصر المشروع على "نسخ إلى دليل المخرجات"، يمكنك أيضًا تحديد إجراء ما بعد الإنشاء في خصائص المشروع في علامة التبويب Build وتضمين أوامر CMD مثل cop.exe وmove.exe.

نحن نستخدم FinalBuilder لأتمتة مجموعة من مهام ما بعد الإنشاء/ما قبل الإنشاء.هناك أيضًا واجهة ويب حتى تتمكن من بدء عمليات الإنشاء (أو دفع مواقع الويب) عن طريق تسجيل الدخول إلى موقع الويب والنقر فوق زر.

http://www.finalbuilder.com/

ألا يمكنك تحرير ملف MSBuild الخاص بمشروع نشر الويب ليقوم بما تريد؟

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