TFS2010 - Rejestrowanie wewnątrz niestandardowej aktywności kompilacji

Mamy niestandardowe działanie kompilacji, które wykonuje wykonanie naszej kompilacji. Używamy niestandardowej aktywności, ponieważ kompilatory, których używamy, są bardzo wyjątkowe, a system jest dość stary i nie chcemy przepisywać całości, aby działała z MSBuild. Jednak repozytorium jest zarządzane przez TFS i kompilacja zostanie uruchomiona przez TFS.

W ramach działania niestandardowej kompilacji chciałbym zalogować status. Obecnie robię to z tym fragmentem kodu 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>

Działa, jednak istnieje jeden duży problem: nasza niestandardowa aktywność wymaga około 6 godzin na wykonanie (jak powiedziałem, jest to stary i duży projekt oprogramowania). Problem polega na tym, że komunikaty dziennika pojawiają się tylko w podsumowaniu kompilacji TFS po zakończeniu działania kompilacji. Tak więc po 6 godzinach budowy wszystkie komunikaty dziennika pojawiają się jednocześnie.

Chcielibyśmy, aby wiadomości były wyświetlane w miarę ich rejestrowania. Aby facet budujący mógł zobaczyć, gdzie aktualnie znajduje się kompilacja, a także zobaczyć, co się stało.

Jedno obejście, które do tej pory zaimplementowałem, polega na tym, że niestandardowe działanie kompilacji używa kolejki komunikatów, która jest współdzielona z częścią podstawową przepływu pracy. Następnie, w fundamencie workflow, utworzyłem równoległą instrukcję, która wykonuje kompilację i jednocześnie opróżnia kolejkę komunikatów i wyświetla je. Oto zrzut ekranu tej konstrukcji:

Jednak wynik jest dość rozczarowujący. Oto, co wychodzi:

Czerwony to rzeczywisty komunikat dziennika budowy, wszystko wokół niego jest tylko pętlą while i innymi elementami ...

Czy można wyłączyć te komunikaty?

questionAnswers(2)

yourAnswerToTheQuestion