Megosztás a következőn keresztül:


Az MSBuild több processzort használ projektek létrehozásához

Az MSBuild teljes mértékben kihasználhatja a több processzorral vagy többmagos processzorokkal rendelkező rendszereket, ha minden processzorhoz külön buildelési folyamatot hoz létre. Ha például egy rendszer négy processzorral rendelkezik, az MSBuild négy buildfolyamatot hoz létre.

Az MSBuild egyszerre tudja feldolgozni a több buildet, ami csökkenti a teljes buildelési időt. A párhuzamos buildek azonban változásokat okozhatnak a buildelési folyamatokban.

Ez a cikk azokat a folyamatmódosításokat ismerteti, amelyek több build egyidejű futtatásakor fordulhatnak elő.

Projektek közötti referenciák

Amikor a Microsoft Build Engine projekthivatkozással (ProjectReference elem) találkozik egy projekt párhuzamos buildjei során, csak egyszer hozza létre a hivatkozást. Ha két projekt ugyanazzal a projekthivatkozással rendelkezik, a referenciát nem kell minden projekthez újraépíteni. Ehelyett a buildelési motor ugyanazt a projekthivatkozást adja vissza mindkét, függőséget tartalmazó projekthez. Az MSBuild ugyanazt a projekthivatkozást is biztosítja a munkamenet későbbi kéréseihez ugyanahhoz a célhoz.

Ciklusészlelés

A párhuzamos buildek ciklusészlelése ugyanaz, mint az MSBuild 2.0 esetében. Az egyetlen különbség az, hogy az MSBuild újabb verziója jelentheti a ciklus észlelését egy másik időpontban vagy a buildben.

Hibák és kivételek a párhuzamos buildek során

A párhuzamos buildek során a hibák és a kivételek eltérő időpontokban fordulhatnak elő, mint a nem párhuzamos buildek során. Ha az egyik projekt nem épül fel, a többi projekt buildelése is folytatódik.

Az MSBuild nem állítja le a projektépítést egy sikertelen buildel párhuzamosan. A többi projekt tovább épül, amíg azok sikeresek vagy sikertelenek nem lesznek. Ha a ContinueOnError beállítás engedélyezve van, a buildek nem állnak le, még akkor sem, ha hiba történik.

C++ projektfájlok (.vcxproj) és megoldásfájlok (.sln)

A C++ projektfájlokat (.vcxproj) és a megoldásfájlokat (.sln) is át lehet adni az MSBuild feladatnak.

  • C++ projektek: A VCWrapperProject API meghívása után létrejön a belső MSBuild projekt.
  • C++ megoldások: Létrejön egy SolutionWrapperProject-példány, majd létrejön a belső MSBuild projekt.

Mindkét esetben az eredményül kapott projektet a többi MSBuild projekthez hasonlóan kezeli a program.

Többfolyamatos végrehajtás

Szinte minden buildel kapcsolatos tevékenység megköveteli, hogy az aktuális címtár állandó maradjon a buildelési folyamat során az elérési úttal kapcsolatos hibák elkerülése érdekében. A projektek nem futtathatók különböző szálakon az MSBuildben, mert több könyvtár létrehozását okozhatják.

A probléma elkerülése, de a többprocesszoros buildek engedélyezése érdekében az MSBuild folyamatelkülönítést használ. Ez a folyamat lehetővé tette, hogy az MSBuild maximális folyamatokat n hozzon létre, ahol n egyenlő a rendszeren elérhető processzorok számával. Ha például az MSBuild egy megoldást hoz létre egy két processzorral rendelkező rendszerre, akkor csak két buildfolyamat jön létre. Ezeket a folyamatokat a rendszer újra felhasználja, hogy az összes projektet a megoldásban felépítse.