TFS2010 - ведение журнала внутри пользовательской сборки

У нас есть пользовательская операция сборки, которая выполняет выполнение нашей сборки. Мы используем пользовательское действие, потому что используемые нами компиляторы очень особенные, а система довольно старая, и мы не хотим переписывать все это, чтобы оно работало с MSBuild. Однако хранилище управляется TFS, и сборка должна запускаться TFS.

Внутри пользовательской деятельности по сборке я хотел бы записать статус. В настоящее время я делаю это с этим фрагментом кода C #:

<code>private void LogMessage(String message, CodeActivityContext context)
        {
           BuildInformationRecord<BuildMessage> record =
             new BuildInformationRecord<BuildMessage>()
             {
                 Value = new BuildMessage()
                    {
                        Importance = BuildMessageImportance.High,
                        Message = message,
                    },
             };

            context.Track(record);
        }
</code>

Это работает, однако есть одна большая проблема: выполнение пользовательской сборки занимает около 6 часов (как я уже сказал, это старый, а также большой программный проект). Проблема заключается в том, что сообщения журнала появляются внутри сводки сборки TFS только после завершения действия сборки. Таким образом, после 6 часов сборки все сообщения журнала появляются сразу.

Мы хотели бы, чтобы сообщения отображались по мере их регистрации. Чтобы парень сборки мог видеть, где сейчас находится сборка, а также видеть, что произошло.

Один из обходных путей, который я реализовал до сих пор, заключается в том, чтобы пользовательское действие по сборке использовало Очередь сообщений, которая используется совместно с фундаментальной частью рабочего процесса. Затем внутри основы рабочего процесса я создал параллельный оператор, который выполняет сборку и одновременно очищает очередь сообщений и отображает их. Вот скриншот этой конструкции:

enter image description here

Тем не менее, результат довольно разочаровывает. Вот что выходит:

enter image description here

Красное - это фактическое сообщение журнала сборки, все вокруг него - просто цикл while и другие вещи ...

Можно ли отключить эти сообщения журнала?

Ответы на вопрос(2)

Ваш ответ на вопрос