مشاريع متعددة Buildفيg في متوازية

MSBuild3.5 يتضمن طريقتين إلى يمكن تحسين الأداء بناء تشغيل multi-core أو أنظمة المعالجات المتعددة، كما يلي:

  • باستخدام /maxcpucountتبديل على سطر الأوامر.

  • بواسطة استخدام BuildInParallelالمهام معلمة تشغيل MSBuildمهمة.

/تبديل Maxcpucount

/maxcpucountالتبديل، أو /mلتمكين قصير، MSBuild3.5 إلى إنشاء عدد معين من معالجات ‏‫MSBuild.exe التي قد تكون تعمل في نفس الوقت. وهذه معالجات هي يعرف أيضا باسم "العامل معالجات." يستخدم كل عملية العامل الأساسي منفصلة أو المعالج، إذا كان أي منها متوفراً، إلى بنية مشروع في نفس الوقت كما قد تكون المعالجات الأخرى متوفر بناء مشاريع الأخرى. على سبيل المثال، تعيين /maxcpucountالقيمة "4" يؤدي إلى MSBuildلإنشاء أربع عمليات العاملين إلى بنية مشروع.

يلي هو مثال عن استخدام /maxcpucountالتبديل في سطر الأوامر.

C:\WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /maxcpucount:3

بتوجيه هذا المثال MSBuildإلى بنية باستخدام معالجات المنفذة ثلاثة. باستخدام هذا تكوين، يمكنك بناء مشاريع الثلاثة في نفس الوقت. للتأكد من الأمثل بنية الأداء، قم بتعيين القيمة ل /maxcpucountتساوي عدد المعالجات أو أساسيات في النظام.

معلمة BuildInParallel المهام

BuildInParallelهو معلمة اختيارية منطقية تشغيلMSBuildمهمة. عندما BuildInParallelمعينة إلى true(its القيمة افتراضية) ، معالجات المنفذة متعددة تم إنشاؤها لإنشاء العديد من مشاريع في نفس الوقت كممكّن. لكي يعمل بشكل صحيح، هذا /maxcpucountتبديل يجب تعيين إلى القيمة أكبر من 1، و النظام يجب أن يكون لديك على الأقل تحتوي على وحدتين أساسيتين أو الثاني أو المزيد المعالجات.

يلي هو سبيل مثال، من microsoft.عام.targets، حول كيفية تعيين BuildInParallelمعلمة.

<PropertyGroup>
    <BuildInParallel Condition="'$(BuildInParallel)' == 
        ''">true</BuildInParallel>
</PropertyGroup>
<MSBuild
    Projects="@(_MSBuildProjectReferenceExistent)"
    Targets="GetTargetPath"
    BuildInParallel="$(BuildInParallel)"
    Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); 
        %(_MSBuildProjectReferenceExistent.SetPlatform)"
    Condition="'@(NonVCProjectReference)'!='' and 
        ('$(BuildingSolutionFile)' == 'true' or 
        '$(BuildingInsideVisualStudio)' == 'true' or 
        '$(BuildProjectReferences)' != 'true') and   
        '@(_MSBuildProjectReferenceExistent)' != ''"
    ContinueOnError="!$(BuildingProject)">
    <Output TaskParameter="TargetOutputs" 
        ItemName="_ResolvedProjectReferencePaths"/>
</MSBuild>

راجع أيضًا:

المبادئ

استخدام مشاريع إلى إنشاء معالجات متعددة

Loggers Multi-Processor مدركين للكتابة