سؤال

التكرار المحتمل:
NAnt أو MSBuild، أيهما تختار ومتى؟

ما هي أفضل أداة بناء ل .شبكة?

أستخدم حاليًا نانت ولكن فقط لأن لدي خبرة مع نملة.يكون MSBuild يفضل؟

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

المحلول

نحن في الواقع نستخدم مزيجًا من نانت و MSBuild مع مثبت السرعة.يتم استخدام NAnt للتحكم في تدفق البرنامج النصي ويستدعي MSBuild لتجميع المشاريع.بعد تشغيل البناء الفعلي، يتم استخدام NAnt لنشر مخرجات بناء المشروع الفردي إلى موقع مشترك.

لست متأكدا من هذا الأفضل عملية.أعتقد أن الكثير منا ما زال يبحث عن أداة بناء رائعة.أحد الأشياء الواعدة التي سمعتها مؤخرًا على ‎.NET Rocks، الحلقة 362, ، يكون PSake لجيمس كوفاتش, ، وهو نظام بناء يعتمد بالكامل على PowerShell.يبدو الأمر واعدًا حقًا نظرًا لأن ما يمكنك فعله باستخدام PowerShell لا حدود له من الناحية النظرية.

نصائح أخرى

أود فقط أن رمي FinalBuilder في هذا المزيج.إنها ليست مجانية، ولكن إذا سئمت من التحرير XML الملفات وتريد أجمل إلى حد ما (المنظمة البحرية الدولية) بيئة العمل سأجربها.

لقد عملت معهم جميعًا وكنت أعود دائمًا إلى FinalBuilder.

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

http://nubuild.codeplex.com/

  • واجهة سطر الأوامر سهلة الاستخدام
  • القدرة على استهداف الجميع .شبكة إصدارات الإطار ، أي 1.1 و 2.0 و 3.0 و 3.5
  • يدعم التكوين القائم على XML
  • يدعم كل من مراجع المشروع والملفات
  • يقوم تلقائيًا بإنشاء "قائمة الإنشاء الكاملة المطلوبة" لمشروع معين - لا توجد صيانة تعمل باللمس.
  • القدرة على اكتشاف وعرض التبعيات الدائرية
  • أداء بنية متوازية - يقرر تلقائيًا أي من المشاريع الموجودة في قائمة الإنشاء التي تم إنشاؤها يمكن بناؤها بشكل مستقل.
  • القدرة على التعامل مع تجميعات الوكيل
  • يوفر فكرة مرئية لعملية الإنشاء ، على سبيل المثال ، إظهار "٪ مكتمل" ، "الحالة الحالية" ، إلخ.
  • يولد سجل تنفيذ مفصل في كل من XML وتنسيق النص
  • تتكامل بسهولة معCruiseControl.NET نظام التكامل المستمر
  • يمكن استخدام مسجل مخصص مثل Xmllogger عند استهداف 2.0 + إصدار
  • القدرة على تحليل سجلات الأخطاء
  • القدرة على نشر التجميعات المصممة على الموقع المحدد للمستخدم
  • القدرة على مزامنة رمز المصدر مع نظام التحكم في المصدر
  • القدرة على إدارة الإصدار

أستخدم MSBuild بالكامل للبناء.إليك البرنامج النصي MSBuild العام الذي يبحث في الشجرة عن ملفات .csproj ويقوم بإنشائها:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <UsingTask AssemblyFile="$(MSBuildProjectDirectory)\bin\xUnit\xunitext.runner.msbuild.dll" TaskName="XunitExt.Runner.MSBuild.xunit"/>
  <PropertyGroup>
    <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
    <DeployDir>$(MSBuildProjectDirectory)\Build\$(Configuration)</DeployDir>
    <ProjectMask>$(MSBuildProjectDirectory)\**\*.csproj</ProjectMask>
    <ProjectExcludeMask></ProjectExcludeMask>
    <TestAssembliesIncludeMask>$(DeployDir)\*.Test.dll</TestAssembliesIncludeMask>
  </PropertyGroup>

  <ItemGroup>
    <ProjectFiles Include="$(ProjectMask)" Exclude="$(ProjectExcludeMask)"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="__Compile;__Deploy;__Test"/>

  <Target Name="Clean">
    <MSBuild Projects="@(ProjectFiles)" Targets="Clean"/>
    <RemoveDir Directories="$(DeployDir)"/>
  </Target>

  <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>

  <!--
  ===== Targets that are meant for use only by MSBuild =====
  -->
  <Target Name="__Compile">
    <MSBuild Projects="@(ProjectFiles)" Targets="Build">
      <Output TaskParameter="TargetOutputs" ItemName="AssembliesBuilt"/>
    </MSBuild>
    <CreateItem Include="@(AssembliesBuilt -> '%(RootDir)%(Directory)*')">
      <Output TaskParameter="Include" ItemName="DeployFiles"/>
    </CreateItem>
  </Target>

  <Target Name="__Deploy">
    <MakeDir Directories="$(DeployDir)"/>
    <Copy SourceFiles="@(DeployFiles)" DestinationFolder="$(DeployDir)"/>
    <CreateItem Include="$(TestAssembliesIncludeMask)">
      <Output TaskParameter="Include" ItemName="TestAssemblies"/>
    </CreateItem>
  </Target>

  <Target Name="__Test">
    <xunit Assembly="@(TestAssemblies)"/>
  </Target>
</Project>

(آسف إذا كان كثيفًا بعض الشيء.يبدو أن تخفيض السعر يزيل الأسطر الفارغة.)

إنه أمر بسيط جدًا بمجرد فهمك للمفاهيم ويتم التعامل مع جميع التبعيات تلقائيًا.يجب أن أشير إلى أننا نستخدم ملفات مشروع Visual Studio، التي تحتوي على الكثير من المنطق المدمج فيها، ولكن هذا النظام يسمح للأشخاص بالبناء بشكل متطابق تقريبًا سواء داخل Visual Studio IDE أو في سطر الأوامر ولا يزال يمنحك المرونة في إضافة الأشياء إلى البنية الأساسية مثل اختبار xUnit الذي تراه في البرنامج النصي أعلاه.

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

مجموعة العناصر هي المكان الذي يحدث فيه المنطق الذي يبحث عن كافة ملفات .csproj في الشجرة.

ثم هناك الأهداف التي يجب أن يتمكن معظم الأشخاص المطلعين على تصنيعها أو nAnt أو MSBuild من متابعتها.إذا قمت باستدعاء هدف البناء، فإنه يستدعي __Compile و__Deploy و__Test.يستدعي الهدف النظيف MSBuild على جميع ملفات المشروع ليقوموا بتنظيف الدلائل الخاصة بهم ثم يتم حذف دليل النشر العالمي.إعادة بناء المكالمات النظيفة ثم البناء.

مجرفة والبكورة مزيج ممتاز.قوة روبي وليس XML.

.NET Open Source 5 - .NET Automation with Rake وAlbacore بقلم ليام ماكلينان [تيكبوب.كوم]

كانوا يستخدمون وثب، ارتداد, ، إطار عمل لنصوص البناء الأنظف في C#.

أستخدم برنامجًا تجاريًا، استوديو البناء الآلي لغرض البناء.

نحن نستخدم MSBuild، لأننا بدأنا باستخدام Visual Studio 2005 (المعروف الآن باسم Visual Studio 2008)، وكان MSBuild "مضمنًا" بالفعل في SDK - حيث توجد صيانة أقل على خادم البناء.إنه استنساخ NAnt، حقًا - كلتا الأداتين مرنتان بشكل لا نهائي من حيث أنهما تسمحان لك بإنشاء مهام بناء مخصصة في التعليمات البرمجية، وكلاهما لديه مجموعة جيدة من مهام بناء المجتمع التي تم إنشاؤها بالفعل.

استخدام لغة برمجة نصية ديناميكية مثل Python وBOO وRuby وما إلى ذلك.لإنشاء وصيانة البرامج النصية للبناء قد يكون بديلاً جيدًا لواحد يعتمد على XML مثل NAnt.(تميل إلى أن تكون أكثر نظافة في القراءة من لغة XML.)

لقد استخدمت كلاهما وأفضل نانت.من الصعب جدًا بالنسبة لي أن أقول إن أحدهما "أفضل" من الآخر.

يعتمد ذلك أيضًا على ماذا أنت تقوم بالبناء.ال مكتبة المهام MSBuild SDC لديه اثنين من المهام الخاصة.على سبيل المثال، ل إعلان, بيزتوك, ، إلخ.

هناك أكثر من 300 مهمة مدرجة في هذه المكتبة بما في ذلك مهام:إنشاء مواقع ويب وإنشاء تجمعات التطبيقات وإنشاء مستخدمين activedirectory والتشغيل FxCop، تكوين الخوادم الافتراضية ، إنشاء ملفات zip ، التكوين كوم+, ، إنشاء أسهم مجلد ، التثبيت في GAC, ، تكوين خادم قاعدة البيانات، تكوين BizTalk 2004 و BizTalk 2006 ، إلخ.

لقد استخدمت كلاً من MSBuild وNAnt، وأفضل MSBuild كثيرًا، لأنه يتطلب تكوينًا أقل بكثير بشكل افتراضي.على الرغم من أنه يمكنك الإفراط في تعقيد الأمور وتحميل MSBuild مع الكثير من التكوينات غير المرغوب فيها أيضًا، في أبسط حالاتها، يمكنك فقط توجيهه إلى ملف الحل/المشروع وتشغيله، وهو ما يكون في معظم الأحيان، في معظم الحالات، كافٍ.

يستخدم UppercuT NAnt للبناء وهو إطار عمل Build Framework سهل الاستخدام للغاية.

الإنشاءات الآلية سهلة مثل (1) اسم الحل، (2) مسار التحكم بالمصدر، (3) اسم الشركة لمعظم المشاريع!

http://projectuppercut.org/

بعض التفسيرات الجيدة هنا: UppercuT

بشكل عام، لدي انطباع بأن NAnt يوفر مرونة أكبر مقارنة بـ MSBuild، بينما (مع احتياجاتي البسيطة نسبيًا) كنت جيدًا مع الأخير حتى الآن.

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