Tworzenie rejestratorów przekazywania
Przekazywanie rejestratorów zwiększa wydajność rejestrowania, umożliwiając wybranie zdarzeń, które mają być monitorowane podczas kompilowania projektów w systemie wieloprocesorowym. Włączając rejestratory przekazujące, można zapobiec przeciążeniu centralnego rejestratora, spowolnienia czasu kompilacji i zaśmiecania dziennika przez niepożądane zdarzenia.
Aby utworzyć rejestrator przekazujący, możesz zaimplementować interfejs, a następnie zaimplementować IForwardingLogger jego metody ręcznie lub użyć ConfigurableForwardingLogger klasy i wstępnie skonfigurowanych metod. (Ten ostatni wystarczy w przypadku większości aplikacji).
Rejestrowanie zdarzeń i reagowanie na nie
Rejestrator przekazujący zbiera informacje o zdarzeniach kompilacji, ponieważ są one zgłaszane przez pomocniczy aparat kompilacji, który jest procesem roboczym tworzonym przez główny proces kompilacji podczas kompilacji w systemie wieloprocesorowym. Następnie rejestrator przekazujący wybiera zdarzenia do przekazywania do centralnego rejestratora na podstawie podanych instrukcji.
Aby obsługiwać zdarzenia, które chcesz monitorować, należy zarejestrować rejestratory przekazujące. Aby zarejestrować się w przypadku zdarzeń, rejestratory muszą zastąpić metodę Initialize . Ta metoda zawiera teraz opcjonalny parametr , nodecount
który można ustawić na liczbę procesorów w systemie. (Domyślnie wartość to 1).
Przykłady zdarzeń, które można monitorować, to TargetStarted, ProjectStartedi ProjectFinished.
W środowisku wieloprocesorowym komunikaty o zdarzeniach prawdopodobnie będą odbierane poza kolejnością. W związku z tym należy ocenić zdarzenia przy użyciu programu obsługi zdarzeń w rejestratorze przekazującym i programować go, aby określić, które zdarzenia mają zostać przekazane do przekierowania do centralnego rejestratora. W tym celu można użyć klasy dołączonej BuildEventContext do każdego komunikatu, aby ułatwić zidentyfikowanie zdarzeń, które chcesz przekazać, a następnie przekazać nazwy zdarzeń do ConfigurableForwardingLogger klasy (lub podklasy). W przypadku korzystania z tej metody do przekazywania zdarzeń nie jest wymagane żadne inne określone kodowanie.
Określanie rejestratora przekazywania
Po skompilowaniu rejestratora przekazywania do zestawu należy poinformować program MSBuild, aby używał go podczas kompilacji. W tym celu należy użyć -FileLogger
przełączników , -FileLoggerParameters
i -DistributedFileLogger
razem z plikiem MSBuild.exe. Przełącznik -FileLogger
informuje MSBuild.exe , że rejestrator jest podłączony bezpośrednio. Przełącznik -DistributedFileLogger
oznacza, że istnieje plik dziennika na węzeł. Aby ustawić parametry rejestratora przekazywania, użyj przełącznika -FileLoggerParameters
. Aby uzyskać więcej informacji na temat tych i innych przełączników MSBuild.exe , zobacz Dokumentacja wiersza polecenia.
Rejestratory obsługujące wiele procesorów
Podczas tworzenia projektu w systemie wieloprocesorowym komunikaty kompilacji z każdego procesora nie są automatycznie przeplatane w ujednoliconej sekwencji. Zamiast tego należy ustanowić priorytet grupowania komunikatów przy użyciu klasy dołączonej BuildEventContext do każdego komunikatu. Aby uzyskać więcej informacji na temat kompilowania wielu procesorów, zobacz Rejestrowanie w środowisku wieloprocesorowym.