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 , nodecountktó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ć -FileLoggerprzełączników , -FileLoggerParametersi -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.