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?