Zapisywanie rejestratorów uwzględniających wiele procesorów
Zdolność MSBuild do skorzystania z wielu procesorów może zmniejszyć czas budowy projektu, ale także dodaje złożoność zbudować rejestrowania zdarzeń.W środowisku z jednym procesorem wydarzenia, wiadomości, ostrzeżeń i błędów przybyć rejestratora w sposób przewidywalny, sekwencyjnego.Jednak w środowisku wielu procesorów zdarzeń z różnych źródeł można dotrzeć w tym samym czasie lub poza kolejnością.Zapewnienie tego, MSBuild zapewnia multi-procesor-aware rejestratora i nowy model rejestrowania i pozwala tworzyć niestandardowe "przesyłanie dalej rejestratory."
Wyzwania rejestrowanie wielu procesorów
Podczas tworzenia jednego lub większej liczby projektów w systemie wieloprocesorowym lub wielordzeniowych, MSBuild tworzenia zdarzenia dla wszystkich projektów są generowane w tym samym czasie.Lawina komunikatów zdarzeń może przybyć rejestratora, w tym samym czasie lub poza kolejnością.Ponieważ MSBuild rejestratora 2.0 nie jest przeznaczony do obsługi tej sytuacji, może zasypać rejestratora i spowodować czasem utworzenia zwiększone, Rejestrator niepoprawne dane wyjściowe lub przerwane kompilacji.Aby rozwiązać te problemy, rejestratora (począwszy od MSBuild 3.5) można przetwarzać zdarzenia-sequence i skorelować zdarzenia i ich źródła.
Mogą poprawiać efektywność rejestrowania nawet więcej, tworząc rejestratora przekazywanie niestandardowych.Rejestrator niestandardowej przekazywania działa jako filtr, umożliwiając wybrać, przed dokonaniem kompilacji tylko zdarzenia mają być monitorowane.Korzystając z Rejestratora przekazywanie niestandardowych, niepożądanych zdarzeń nie zasypać rejestratora, zaśmiecać dzienniki lub wolno budować razy.
Modele rejestrowanie wielu procesorów
Zapewnienie problemów związanych z procesor multi kompilacji, MSBuild obsługuje dwa modele rejestrowania, Środkowej i rozproszonych.
Model centralnego rejestrowania
W modelu centralnego rejestrowania jedno wystąpienie MSBuild.exe działa jako "centralnego węzła", a podrzędne instancje centralnego węzła ("wtórne węzły") dołączyć do centralnego węzła, aby ułatwić wykonywanie zadań kompilacji.
Rejestratory różnych typów, które przywiązują do centralnego węzła są znane jako "rejestratory centralnego." Tylko jedno wystąpienie każdego typu rejestratora może być dołączony do centralnego węzła w tym samym czasie.
W przypadku wystąpienia kompilacji pomocniczy węzłów marszruty ich zdarzenia kompilacji do centralnego węzła.Centralnego węzła trasy jego zdarzeń, a także tych węzłów pomocniczy do jednej lub kilku dołączonych rejestratory centralnej.Rejestratory następnie utworzyć plików dziennika, które są oparte na danych przychodzących.
Chociaż tylko ILogger jest wymagane do wykonania przez rejestratora centralnego, zaleca się także stosowanie INodeLogger , aby rejestratora centralnego inicjuje z liczby węzłów, które uczestniczą w kompilacji.Przeciążenie następujące Initialize metoda wywołuje gdy silnik inicjuje rejestratora.
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Wcześniej istniejących ILogger-Rejestrator podstawie mogą pełnić rolę centralnej rejestratory i można dołączyć do kompilacji.Jednak centralny rejestratory napisane bez wyraźnej obsługi scenariuszy rejestrowanie wielu procesorów i zdarzenia out-of-order może przerwać kompilacji lub generowania danych wyjściowych bez znaczenia.
Model rejestrowania rozproszonego
W modelu centralnego rejestrowania zbyt dużo ruchu przychodzącego komunikatu może spowodować przeciążenie centralnego węzła, na przykład podczas tworzenia wielu projektów w tym samym czasie.To podkreślają zasobów systemowych i zmniejszyć wydajność kompilacji.Aby złagodzić ten problem MSBuild obsługuje model rejestrowania rozproszonego.
Model rejestrowania rozproszonego rozszerza model centralnego rejestrowania pozwala nadawać rejestratora przesyłania dalej.
Rejestratory przesyłania dalej
Rejestrator przesyłania dalej jest pomocniczy, lekki rejestrator, który ma filtr zdarzeń, która przywiązuje na węźle pomocniczym i odbiera przychodzące zdarzenia kompilacji z danego węzła.On filtruje przychodzące zdarzenia i przekazuje tylko te, które można określić do centralnego węzła.Zmniejsza to ruch wiadomości, który jest wysyłany do centralnego węzła i zwiększa ogólną wydajność kompilacji.
Istnieją dwa sposoby rejestrowanie rozproszonych, w następujący sposób:
Dostosowywanie rejestratora prefabrykowanych przesyłania dalej o nazwie ConfigurableForwardingLogger.
Pisać własne niestandardowe przekierowanie rejestratora.
Można zmodyfikować ConfigurableForwardingLogger zgodnie z własnymi preferencjami.W tym celu należy wywołać rejestratora w wierszu polecenia przy użyciu MSBuild.exe, a lista zdarzenia kompilacji, które mają rejestratora do przekazania centralnego węzła.
Alternatywnie można utworzyć rejestratora przekazywanie niestandardowych.Tworząc rejestratora przekazywanie niestandardowe, można dostosować zachowanie rejestratora.Tworzenie rejestratora przekazywanie niestandardowe jest jednak bardziej skomplikowane niż tylko Dostosowywanie ConfigurableForwardingLogger.Aby uzyskać więcej informacji, zobacz Tworzenie przekazywania rejestratorów.
W przypadku prostych za pomocą ConfigurableForwardingLogger rozproszonych rejestrowania
Aby dołączyć ConfigurableForwardingLogger lub Rejestrator niestandardowe przesyłania dalej, należy użyć /distributedlogger przełączanie (/dl w skrócie) w kompilacji wiersza polecenia MSBuild.exe.Określanie nazwy rejestratora typów i klas format jest taki sam jak dla /logger przełączanie, chyba że rozproszonych rejestratora zawsze ma dwie klasy rejestrowania zamiast jednego, Rejestrator przesyłania dalej i rejestratora centralnego.Oto przykład sposoby dołączania rejestratora przekazywanie niestandardowych, o nazwie XMLForwardingLogger.
msbuild.exe myproj.proj/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,Culture=neutral
[!UWAGA]
Gwiazdka (*) muszą być rozdzielone nazwy dwóch rejestratora w /dl przełączyć.
Przy użyciu ConfigurableForwardingLogger przypomina korzystanie z innych rejestratora (jak wskazano w Uzyskiwanie dzienników kompilacji za pomocą narzędzia MSBuild), z tym wyjątkiem, że dołączyć rejestratora ConfigurableForwardingLogger zamiast typowych MSBuild rejestratora i można określić jako parametry zdarzenia, które ma ConfigurableForwardingLogger przekazać do centralnego węzła.
Na przykład, jeśli użytkownik chce być powiadamiany tylko wtedy, gdy kompilacji rozpoczyna się i kończy się, a gdy wystąpi błąd, można przekazać BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, i ERROREVENT jako parametry.Wiele parametrów mogą być przekazywane, oddzielając je średnikami.Oto przykład jak używać do przesyłania dalej tylko ConfigurableForwardingLogger BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, i ERROREVENT zdarzenia.
msbuild.exe myproj.proj /distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*ConfigureableForwardingLogger,C:\My.dll;BUILDSTARTEDEVENT; BUILDFINISHEDEVENT;ERROREVENT
Oto lista dostępnych parametrów ConfigurableForwardingLogger.
Parametry ConfigurableForwardingLogger |
---|
BUILDSTARTEDEVENT |
BUILDFINISHEDEVENT |
PROJECTSTARTEDEVENT |
PROJECTFINISHEDEVENT |
TARGETSTARTEDEVENT |
TARGETFINISHEDEVENT |
TASKSTARTEDEVENT |
TASKFINISHEDEVENT |
ERROREVENT |
WARNINGEVENT |
HIGHMESSAGEEVENT |
NORMALMESSAGEEVENT |
LOWMESSAGEEVENT |
CUSTOMEVENT |
WIERSZ POLECENIA |
PERFORMANCESUMMARY |
NOSUMMARY |
SHOWCOMMANDLINE |