Rejestrowanie w środowisku wielu procesorów
Zdolność MSBuild 3.5 do używania wielu procesorów może znacznie skrócić czas tworzenia projektu, ale również dodaje złożoności do rejestrowania.W środowisku z jednym procesorem rejestratora może obsłużyć przychodzące zdarzenia, wiadomości, ostrzeżeń i błędów w sposób przewidywalny, kolejne.Jednak w środowisku wieloprocesorowym zdarzenia z kilku źródeł można dotrzeć równocześnie lub w kolejności.MSBuild3.5 udostępnia nowe rejestratora wieloprocesorowych-processor-aware i umożliwia tworzenie niestandardowych "przekazywanie rejestratory."
Rejestrowanie kompilacje wielu procesorów
Podczas tworzenia jednego lub więcej projektów w systemie wieloprocesorowym lub wielordzeniowych MSBuild tworzenia zdarzenia dla wszystkich projektów są generowane jednocześnie. W tym samym czasie lub kolejności zejściu lawiny dane zdarzenie może przybyć rejestratora. To jest zasypać rejestratora i spowodować zwiększone build razy, rejestratora niepoprawne dane wyjściowe lub nawet przerwane kompilacji. Aby rozwiązać te problemy, MSBuild 3.5 rejestratora można przetwarzać out sekwencję zdarzeń i skorelować zdarzenia i ich źródła.
Można poprawić rejestrowania wydajności nawet więcej, tworząc rejestratora przekazywanie niestandardowych.Rejestratora niestandardowe przekazywania działa jako filtr, umożliwiając użytkownikowi wybrać przed dokonaniem kompilacji, zdarzenia, który chcesz monitorować.Korzystając z Rejestratora przekazywanie niestandardowych, niepożądanych zdarzeń nie zasypać rejestratora, zaśmiecać dzienników lub slow zbudować razy.
Centralnego rejestrowania modelu
Dla wielu procesorów kompilacje MSBuild używa "model centralnego rejestrowania". W modelu centralnego rejestrowania wystąpienie MSBuild.exe działa jako proces budowania podstawowego lub "centralne węzła. Pomocniczy wystąpienia MSBuild.exe lub "wtórne węzłach, są dołączone do centralnej węzła.Wszelkie dołączone do centralnej węzeł rejestratory opartych na ILogger są znane jako "centralne rejestratory" i rejestratory dołączonych do wtórnego węzły są znane jako "wtórne rejestratory."
Podczas kompilacji występuje, rejestratory pomocniczy trasy ruchu swoich zdarzenia do centralnej rejestratory.Ponieważ zdarzenia pochodzą na kilka węzłów wtórnych, dane dociera do centralnej węzeł jednocześnie, ale z przeplotem.Aby rozwiązać odwołania do zdarzeń do projektu i cel zdarzenia, argumenty zdarzeń obejmują informacje kontekstowe zdarzenia kompilacji dodatkowe.
Chociaż tylko ILogger jest wymagane, mają być realizowane przez central rejestratora, firma Microsoft zaleca także implementowanie INodeLogger Jeśli chcesz centralnej rejestratora zainicjować z liczbą węzłów, które uczestniczą w kompilacji.Następujące przeciążenie z Initialize metoda jest wywoływana, gdy silnik inicjuje rejestratora:
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Rozproszonego modelu rejestrowania
W modelu centralnego rejestrowania zbyt dużo ruchu przychodzącego wiadomości, na przykład gdy wiele projektów budować na raz, może spowodować przeciążenie węzła centralnej, co podkreśla systemu i obniża wydajność kompilacji.
W celu zmniejszenia tego problemu, program MSBuild umożliwia "modelu rozproszonych rejestrowania", który rozszerza modelu centralnego rejestrowania, umożliwiając tworzenie rejestratory przesyłania dalej.Rejestratora przekazywanie dołączonego do wtórnego węzła i odbiera przychodzące zdarzenia kompilacji z danego węzła.Podobnie jak regularne rejestratora jest rejestratora przesyłania dalej, z wyjątkiem, że go filtrować zdarzenia, a następnie przekazują te pożądanych centralna węzeł.To zmniejsza ruch wiadomości w węźle centralnej i dlatego umożliwia lepszą wydajność.
Można utworzyć rejestratora przesyłania dalej, implementując IForwardingLogger interfejsu, która wywodzi się z ILogger.Interfejs jest zdefiniowana jako:
public interface IForwardingLogger: INodeLogger
{
public IEventRedirector EventRedirector { get; set; }
public int NodeId { get; set; }
}
Do przesyłania dalej zdarzeń w rejestratora przesyłania dalej, call ForwardEvent metoda IEventRedirector interfejsu.Przekazywać odpowiednie BuildEventArgs, lub pochodną, jako parametr.
Aby uzyskać więcej informacji, zobacz Tworzenia, przekazywania rejestratory.
Dołączanie rozproszonych rejestratora
Aby dołączanie rozproszonych rejestratora po kompilacji wiersza polecenia, należy użyć /distributedlogger (lub /dl w skrócie) przełączyć.Format dla określania nazw rejestratora typów i klas są takie same, jak dla /logger przełączanie, chyba że rozproszonych rejestratora składa się z dwóch klas rejestrowania: rejestratora przesyłania dalej i centralnym rejestratora.Następujące jest przykładem dołączanie rozproszonych rejestratora:
C:\ WINDOWS\Microsoft.NET\Framework\v3.5.20301>msbuild.exe *.proj
/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,
Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,
Culture=neutral
Gwiazdka (*) oddziela nazwy dwóch rejestratora w /dl przełączyć.