Registradores de Multi-processador reconhecimento de escrita
A capacidade de MSBuild 3.5 para aproveitar os vários processadores pode diminuir o tempo de criação do projeto, mas também adiciona complexidade ao log de eventos de compilação.Em um ambiente de processador único, eventos, mensagens, avisos e erros de chegarem ao agente de log de maneira previsível e seqüencial.No entanto, em um ambiente com vários processadores, eventos de origens diferentes podem chegar ao mesmo tempo ou fora de seqüência.Para fornecer para isso, MSBuild 3.5 fornece um agente de log multi-processador-aware e um novo modelo de log e permite que você criar personalizada "registradores de encaminhamento".
Desafios de log com vários processadores
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 ao mesmo tempo.Uma avalanche de mensagens de evento pode chegar ao agente de log ao mesmo tempo ou fora de seqüência.Porque um MSBuild 2.0 do agente de log não foi projetado para lidar com essa situação, ele 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ê escolher, antes de criar, somente os eventos que você deseja monitorar.Quando você usa um agente de log personalizado de encaminhamento, eventos indesejados não podem sobrecarregar o agente de log, truncar os logs ou lenta construir vezes.
Modelos de registro com vários processadores
Para fornecer para problemas de compilação de processador múltiplo relacionados, MSBuild 3.5 suporta dois modelos de registro em log, distribuídos e central.
Modelo de log central
No modelo de central de registro, uma única instância do MSBuild. exe age como o "nó central", e anexar de instâncias filho do nó central ("nós secundários") para o nó central para ajudá-lo a executar tarefas de compilação.
Registradores de vários tipos que se conectam ao nó central são conhecidos como "registradores central". Apenas uma instância de cada tipo de agente de log pode ser associada ao nó central, ao mesmo tempo.
Quando uma compilação ocorre, os nós secundários roteiam seus eventos de compilação para o nó central.O nó central encaminha todos os seus eventos e também aqueles de nós secundários, para um ou mais dos registradores de central anexados.Os registradores, em seguida, criam arquivos de log que são baseados em dados de entrada.
Embora apenas ILogger é necessária para ser implementado por um agente de log central, é recomendável que você implemente também INodeLogger para que o agente de log central inicializa com o número de nós que estão participando da compilação.O seguinte da sobrecarga da Initialize método chama quando o mecanismo inicializa o agente de log.
public interface INodeLogger: ILogger
{
public void Initialize(IEventSource eventSource, int nodeCount);
}
Qualquer preexistente ILogger-registradores com base pode atuar como registradores de central e pode anexar a compilação.No entanto, registradores central escritos sem suporte explícito para cenários de log com vários processadores e fora de ordem eventos podem quebrar uma compilação ou produzir saída sem sentido.
Modelo de log distribuído
No modelo de log central, muito tráfego de mensagem de entrada pode sobrecarregar o nó central, por exemplo, quando a criação de vários projetos ao mesmo tempo.Isso pode enfatizar os recursos do sistema e diminuir o desempenho da compilação.Para amenizar o problema, MSBuild 3.5 oferece suporte a um modelo de log distribuído.
O modelo de log distribuído amplia o modelo de log central, permitindo que você criar um agente de log de encaminhamento.
Registradores de encaminhamento
Um agente de log de encaminhamento é um agente de log secundário e leve que tem um filtro de evento que conecta-se a um nó secundário e recebe eventos de compilação de entrada do nó.Ele filtra os eventos de entrada e encaminha apenas aquelas que você especificar para o nó central.Isso reduz o tráfego de mensagens que é enviado para o nó central e melhora o desempenho geral de compilação.
Há duas maneiras de usar o log distribuído, da seguinte maneira:
Personalizar o agente de log de encaminhamento pré-fabricados chamado ConfigurableForwardingLogger.
Escreva seu próprio agente de log personalizado de encaminhamento.
Você pode modificar o ConfigurableForwardingLogger para atender às suas necessidades.Para fazer isso, ligue para o agente de log na linha de comando usando MSBuild. exe e relacionar os eventos de compilação que você deseja que o agente de log para encaminhar para o nó central.
Como alternativa, você pode criar um agente de log personalizado de encaminhamento.Criando um agente de log de encaminhamento personalizado, você pode ajustar o comportamento do agente de log.No entanto, a criação de um agente de log personalizado de encaminhamento é mais complexa do que apenas Personalizando o ConfigurableForwardingLogger.Para obter mais informações, consulte Criação de registradores de encaminhamento..
Usando o ConfigurableForwardingLogger para simples distribuídos log
Para anexar em um ConfigurableForwardingLogger ou um agente de log de encaminhamento personalizado, use o /distributedlogger alternar (/dl de forma abreviada) em uma compilação de linha de comando do MSBuild. exe.O formato para especificar os nomes das classes e tipos de agente de log é o mesmo que para o /logger alternar, exceto que um agente de log distribuído sempre tem duas classes de log em vez de um, o agente de log de encaminhamento e o agente de log central.Este é um exemplo de como anexar a um agente de log de encaminhamento personalizado denominado XMLForwardingLogger.
C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj/distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*XMLForwardingLogger,MyLogger,Version=1.0.2,Culture=neutral
Observação |
---|
Um asterisco (*) deve separar os nomes de dois logger na /dl alternar. |
Usar o ConfigurableForwardingLogger é como usar qualquer outro agente de log (conforme descrito no Obtendo logs de compilação com o MSBuild), exceto que você anexa o agente de log em vez do típico ConfigurableForwardingLogger MSBuild agente de log e você especificar como parâmetros os eventos que você deseja o ConfigurableForwardingLogger para passar para o nó central.
Por exemplo, se você deseja ser notificado quando uma compilação inicia e termina, e quando ocorre um erro, você poderia passar BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, e ERROREVENT como parâmetros.Vários parâmetros podem ser passados separando-os com ponto e vírgula.A seguir está um exemplo de como usar o ConfigurableForwardingLogger para encaminhar apenas o BUILDSTARTEDEVENT, BUILDFINISHEDEVENT, e ERROREVENT eventos.
C:\ WINDOWS\Microsoft.NET\Framework\v3.5>msbuild.exe myproj.proj /distributedlogger:XMLCentralLogger,MyLogger,Version=1.0.2,Culture=neutral*ConfigureableForwardingLogger,C:\My.dll;BUILDSTARTEDEVENT; BUILDFINISHEDEVENT;ERROREVENT
Veja a seguir uma lista dos parâmetros ConfigurableForwardingLogger disponíveis.
Parâmetros de ConfigurableForwardingLogger |
---|
BUILDSTARTEDEVENT |
BUILDFINISHEDEVENT |
PROJECTSTARTEDEVENT |
PROJECTFINISHEDEVENT |
TARGETSTARTEDEVENT |
TARGETFINISHEDEVENT |
TASKSTARTEDEVENT |
TASKFINISHEDEVENT |
ERROREVENT |
WARNINGEVENT |
HIGHMESSAGEEVENT |
NORMALMESSAGEEVENT |
LOWMESSAGEEVENT |
CUSTOMEVENT |
LINHA DE COMANDO |
PERFORMANCESUMMARY |
NOSUMMARY |
SHOWCOMMANDLINE |