Criar agentes de encaminhamento
Agentes de encaminhamento melhoram a eficiência de log, permitindo que você escolha os eventos que deseja monitorar ao compilar projetos em um sistema com vários processadores. Ao habilitar agentes de encaminhamento, você pode impedir que eventos indesejados sobrecarreguem o agente central, diminuindo o tempo de build e desorganizando o log.
Para criar um agente de encaminhamento, você pode implementar a interface IForwardingLogger e, em seguida, implementar seus métodos manualmente ou usar a classe ConfigurableForwardingLogger e seus métodos pré-configurados. (O último será suficiente para a maioria dos aplicativos.)
Registrar eventos e responder a eles
Um agente de encaminhamento reúne informações sobre eventos de build à medida que são relatados pelo mecanismo de build secundária, que é um processo de trabalho criado pelo processo de build principal durante um build em um sistema com vários processadores. Em seguida, o agente de encaminhamento seleciona eventos para encaminhar para o agente central, com base nas instruções que você atribuiu a ele.
Você deve registrar os agentes de encaminhamento para manipular os eventos que deseja monitorar. Para registrar-se para eventos, os agentes devem substituir o método Initialize. Este método agora inclui um parâmetro opcional, nodecount
, que pode ser definido como o número de processadores no sistema. (Por padrão, o valor é 1.)
Alguns exemplos de eventos que você pode monitorar são TargetStarted, ProjectStarted e ProjectFinished.
Em um ambiente com vários processadores, mensagens de evento, provavelmente, serão recebidas fora de ordem. Portanto, você deve avaliar os eventos usando o manipulador de eventos no agente de encaminhamento e programá-lo para determinar quais eventos passar para o redirecionador para serem encaminhados para o agente central. Para fazer isso, você pode usar a classe BuildEventContext, que está anexada a cada mensagem, para ajudar a identificar eventos que deseja encaminhar e, em seguida, transmitir os nomes de eventos para a classe ConfigurableForwardingLogger (ou uma subclasse dela). Quando você usa esse método, nenhuma outra codificação específica é necessária para encaminhar eventos.
Especificar um agente de encaminhamento
Depois que o agente de encaminhamento tiver sido compilado em um assembly, você deve informar o MSBuild para usá-lo durante builds. Para fazer isso, use as opções -FileLogger
, -FileLoggerParameters
e -DistributedFileLogger
junto com MSBuild.exe. A opção -FileLogger
informa ao MSBuild.exe de que o agente está diretamente anexado. A opção -DistributedFileLogger
significa que há um arquivo de log por nó. Para definir parâmetros no agente de encaminhamento, use a opção -FileLoggerParameters
. Para obter mais informações sobre essas e outras opções do MSBuild.exe, confira Referência de linha de comando.
Agentes com reconhecimento de multiprocessador
Quando você cria um projeto em um sistema com vários processadores, as mensagens de build de cada processador não são intercaladas automaticamente em uma sequência unificada. Em vez disso, você deve estabelecer uma prioridade de agrupamento de mensagens usando a classe BuildEventContext que está anexada a cada mensagem. Para obter mais informações sobre o build de multiprocessador, confira Registrando em log em um ambiente multiprocessador.