Sdílet prostřednictvím


Použití více procesorů k sestavení projektů

Nástroj MSBuild může využívat výhod systémů s více procesory nebo procesorů s více jádry. Pro každý dostupný procesor je vytvořen samostatný proces sestavení. Pokud má systém například čtyři procesory, jsou vytvořeny čtyři procesy sestavení. Nástroj MSBuild může zpracovávat tyto sestavení současně, a proto se sníží celková doba sestavení. Paralelní sestavení však zavádí některé změny v tom, jak dochází k procesům sestavení. V tomto tématu jsou dané změny popsány.

Odkazy na projekt-projekt

Když při použití paralelních sestavení k sestavení projektu narazí modul Microsoft Build Engine na odkaz typu projekt-projekt (P2P), sestaví odkaz pouze jednou. Obsahují-li stejný P2P odkaz dva projekty, nedojde k opětovnému sestavení odkazu pro každý projekt. Místo toho se jádro sestavení vrátí na stejný P2P odkaz obou projektů, které na něm závisí. Budoucím požadavkům relace stejného cíle je poskytnut stejný P2P odkaz.

Detekce cyklu

Detekce cyklu funguje stejně jako ve verzi MSBuild 2.0, s tím rozdílem, že nástroj MSBuild teď může ohlásit detekci cyklu v jiném okamžiku nebo v sestavení.

Chyby a výjimky během paralelních sestavení

V paralelních sestaveních se mohou chyby a výjimky vyskytovat v odlišnou dobu, než jak je tomu u neparalelních sestavení. Nebo nedojde-li k sestavení projektu, sestavování jiného projektu pokračuje. Nástroj MSBuild nezastaví žádné sestavení projektu, které se vytváří paralelně s sestavením, které selhalo. Ostatní projekty budou pokračovat v sestavování, dokud nebudou úspěšné nebo selžou. Pokud však bylo povoleno nastavení ContinueOnError, nedojde k zastavení žádných sestavení dokonce ani při výskytu chyby.

Soubory projektu C++ (.vcxproj) a řešení (.sln)

Oba projekty C++ (.vcxproj) a soubory řešení (.sln) lze předat do úlohy MSBuild. U projektů C++ se volá VCWrapperProject a pak se vytvoří interní projekt MSBuild. V případě řešení jazyka C++ se vytvoří projekt SolutionWrapperProject a pak se vytvoří interní projekt MSBuild. V obou případech se s výsledným projektem zachází stejně jako s jakýmkoli jiným projektem MSBuild.

Provádění více procesů

Téměř všechny činnosti týkající se sestavení vyžadují, aby aktuální adresář zůstal neměnný po celou dobu procesu sestavení, protože jen tak se zabrání chybám souvisejícím s umístěním. Proto projekty nelze spustit na různých vláknech nástroje MSBuild, protože by způsobily vytvoření více adresářů.

Chcete-li se tomuto problému vyhnout, ale přesto povolit sestavení s více procesory, nástroj MSBuild používá "izolaci procesů". Pomocí izolace procesů může nástroj MSBuild vytvořit maximální počet n procesů, kde n se rovná počtu procesorů dostupných v systému. Pokud například NÁSTROJ MSBuild sestaví řešení v systému se dvěma procesory, vytvoří se pouze dva procesy sestavení. Tyto procesy jsou znovu použity k sestavení všech projektů v řešení.