Efetuando logon em um ambiente com vários processadores

A capacidade de MSBuild 3.5 para usar vários processadores pode diminuir bastante o tempo de criação do projeto, mas também adiciona complexidade ao log.Em um ambiente de processador único, o agente de log pode manipular eventos de entrada, mensagens, avisos e erros de maneira previsível e seqüencial.No entanto, em um ambiente com vários processadores, eventos de várias fontes podem chegar simultaneamente ou fora de seqüência.MSBuild3.5 fornece um novo agente de log de multi-processador-aware e permite a criação de personalizado "encaminhando loggers."

Compilações de processador múltiplo de log.

Quando você cria um ou mais projetos em um sistema com vários processadores ou vários núcleos, MSBuild build events para todos os projetos são gerados simultaneamente. Uma avalanche de dados de evento pode chegar ao agente de log ao mesmo tempo ou fora de seqüência. Isso pode sobrecarregar o agente de log e causar tempos de aumento de compilação, saída incorreta do agente de log ou até mesmo um build danificado. Para solucionar esses problemas, o MSBuild 3,5 logger pode processar fora de seqüência eventos e correlacionar eventos e suas origens.

Você pode melhorar a eficiência de log ainda mais com a criação de um agente de log personalizado de encaminhamento.Um agente de log personalizado encaminhamento atua como um filtro, permitindo que você escolha, antes de criar, os eventos que você deseja monitorar.Quando você usa um agente de log personalizado de encaminhamento, eventos indesejados não sobrecarregar o agente de log, truncar os logs ou lenta construir vezes.

Bb383987.collapse_all(pt-br,VS.110).gifModelo de log central

Para compilações para vários processadores, o MSBuild usa um "modelo de central de registro". O modelo de central de registro, uma instância do MSBuild. exe age como o processo de compilação principal, ou "nó central". Instâncias secundárias do MSBuild. exe, ou "nós secundários", são conectadas ao nó central.Qualquer loggers baseados em ILogger conectados ao nó central são conhecidos como "registradores central" e registradores anexados a nós secundários são conhecidos como "registradores secundários".

Quando uma compilação ocorre, os agentes secundários roteiam o tráfego de evento para os loggers central.Porque os eventos se originam nos vários nós secundários, os dados chegam no nó central simultaneamente mas intercalados.Para resolver referências de evento para projetos e eventos para o destino, os argumentos do evento incluem informações de contexto do evento de compilação adicionais.

Embora apenas ILogger é necessária para ser implementado por um agente de log central, é recomendável que você implemente também INodeLogger se você desejar que o agente de log central ao inicializar com o número de nós que estão participando da compilação.O seguinte da sobrecarga da Initialize método é chamado quando o mecanismo inicializa o agente de log:

public interface INodeLogger: ILogger
{
    public void Initialize(IEventSource eventSource, int nodeCount);
}

Bb383987.collapse_all(pt-br,VS.110).gifModelo de log distribuído

No modelo de log central, muito tráfego de mensagens de entrada, como, por exemplo, quando vários projetos ao mesmo tempo, o build pode sobrecarregar o nó central, o que enfatiza o sistema e reduz o desempenho da compilação.

Para reduzir esse problema, o MSBuild também permite que um registro em log distribuído "modelo" que estende o modelo de log central, permitindo que você criar os registradores de encaminhamento.Um agente de log de encaminhamento é conectada a um nó secundário e recebe eventos de compilação de entrada do nó.O agente de log de encaminhamento é como um agente de log normal, exceto que ele pode filtrar os eventos e, em seguida, encaminhar apenas aquelas desejado para o nó central.Isso reduz o tráfego de mensagens no nó central e, portanto, permite um melhor desempenho.

Você pode criar um agente de log de encaminhamento ao implementar a IForwardingLogger interface, que deriva de ILogger.A interface é definida como:

public interface IForwardingLogger: INodeLogger
{
    public IEventRedirector EventRedirector { get; set; }
    public int NodeId { get; set; }
}

Para encaminhar eventos em um agente de log de encaminhamento, chame o ForwardEvent método da IEventRedirector interface.Passar o apropriado BuildEventArgs, ou um derivativo, como o parâmetro.

Para obter mais informações, consulte Criação de registradores de encaminhamento..

Bb383987.collapse_all(pt-br,VS.110).gifAnexando um agente de log distribuído

Para anexar um agente de log distribuído em uma versão de linha de comando, use o /distributedlogger (ou, /dl de forma abreviada) alternar.O formato para especificar os nomes das classes e tipos de agente de log são as mesmas para o /logger alternar, exceto que um agente de log distribuído é composto de duas classes de log: um agente de log de encaminhamento e um agente de log central.Veja a seguir um exemplo de anexação de um agente de log distribuído:

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

Um asterisco (*) separa os nomes de dois logger na /dl alternar.

Consulte também

Conceitos

Criar agentes de log

Criação de registradores de encaminhamento.