Proje oluşturmak için birden çok işlemci kullanma

MSBuild, birden çok işlemciye veya çok çekirdekli işlemciye sahip sistemlerden yararlanabilir. Kullanılabilir her işlemci için ayrı bir derleme işlemi oluşturulur. Örneğin, sistemin dört işlemcisi varsa, dört derleme işlemi oluşturulur. MSBuild bu derlemeleri aynı anda işleyebilir ve bu nedenle genel derleme süresi azalır. Ancak paralel derleme, derleme işlemlerinin nasıl gerçekleştiğinde bazı değişikliklere neden olur. Bu konu başlığında bu değişiklikler açıklanmaktadır.

Projeden projeye başvurular

Microsoft Build Engine proje derlemek için paralel derlemeler kullanırken projeden projeye (P2P) başvurusuyla karşılaştığında, başvuruyu yalnızca bir kez oluşturur. İki proje aynı P2P başvurusuna sahipse, başvuru her proje için yeniden derlenmez. Bunun yerine, derleme altyapısı buna bağlı her iki proje için de aynı P2P başvuruyu döndürür. Aynı hedef için oturumda gelecek isteklere aynı P2P başvurusu sağlanır.

Döngü algılama

Döngü algılama, MSBuild 2.0'da olduğu gibi çalışır, ancak artık MSBuild döngünün farklı bir zamanda veya derlemede algılandığını bildirebilir.

Paralel derlemeler sırasında hatalar ve özel durumlar

Paralel derlemelerde hatalar ve özel durumlar, paralel olmayan bir derlemede olduğundan farklı zamanlarda oluşabilir ve bir proje derlenmediğinde diğer proje derlemeleri devam eder. MSBuild, başarısız olanla paralel olarak derleyen hiçbir proje derlemesini durdurmaz. Diğer projeler başarılı veya başarısız olana kadar derlemeye devam eder. Ancak, etkinleştirildiyse ContinueOnError , bir hata oluşsa bile hiçbir derleme durmaz.

C++ proje (.vcxproj) ve çözüm (.sln) dosyaları

Hem C++ projeleri (.vcxproj) hem de çözüm (.sln) dosyaları MSBuild görevine geçirilebilir. C++ projeleri için VCWrapperProject çağrılır ve ardından iç MSBuild projesi oluşturulur. C++ çözümleri için bir SolutionWrapperProject oluşturulur ve ardından iç MSBuild projesi oluşturulur. Her iki durumda da, sonuçta elde edilen proje diğer MSBuild projelerinde olduğu gibi değerlendirilir.

Çok işlemli yürütme

Neredeyse tüm derlemeyle ilgili etkinlikler, yol ile ilgili hataları önlemek için derleme işlemi boyunca geçerli dizinin sabit kalmasını gerektirir. Bu nedenle, projeler birden çok dizinin oluşturulmasına neden olacağından MSBuild'deki farklı iş parçacıklarında çalışamaz.

Bu sorunu önlemek ancak yine de çok işlemcili derlemeleri etkinleştirmek için MSBuild "işlem yalıtımı" kullanır. MSBuild, işlem yalıtımını kullanarak sistemdeki kullanılabilir işlemci sayısına eşit olan n en fazla n işlem oluşturabilir. Örneğin, MSBuild iki işlemcisi olan bir sistemde bir çözüm oluşturursa, yalnızca iki derleme işlemi oluşturulur. Bu işlemler çözümdeki tüm projeleri oluşturmak için yeniden kullanılır.