Apr 282015
 

Fehler TF900548

In meiner TFS Schulungsumgebung hatte ich schon paar Mal den Fehler das der Build Prozess anscheinend die Testresults nicht veröffentlichen konnte. Bisher war es an der Stelle ausreichend den Cache Folder auf dem Build Server zu löschen:

Beispiel:
C:\Users\TFSBuild\AppData\Local\Microsoft\Team Foundation\5.0

Wenn der Ordner noch im Zugriff ist kann man kurz den Build Service in der Administration Console stoppen und anschließend wieder starten. Ich gehe davon aus das die Ursache war das ich den TFS auf einen Snapshot zurück gesetzt habe, den Build Server jedoch nicht. Somit waren hier noch alte Daten im Cache.

Jul 212014
 

Möchte man die Drop Location der Build Server auf einen anderen UNC Pfad umziehen wäre es schön wenn der Link zur Drop Location für die bereits abgeschlossenen Builds auch noch funktioniert. Diesen könnten wir relativ einfach per API ändern. Wenn man sich die Arbeit sparen will geht es noch einfacher mit den Community TFS Build Manager .

Dieser war früher Bestandteil der TFS Build Extensions und ist mittlerweile über die Visual Studio Gallery verfügbar.

Nach Installation ist der TFS Build Manager unter Tools zu erreichen

Wir können Build Definitionen selektieren und den Drop Folder für alle Definitionen bearbeiten sowie ein Search/Replace für die Drop Location der abgeschlossenen Builds ausführen:

Wahrscheinlich bekommt man noch eine Exception das man nicht über das Recht „Update build information“ verfügt. Der Account unter dem die Build Server laufen (TFSBuild) hat dieses Recht. Also entweder den Account nutzen oder sich vorrübergehend das Recht über Webaccess geben:

Danach sollte es möglich sein die Drop Location der alten Builds zu ändern.

Jul 042014
 

Seit längerer Zeit kann man die Testabdeckung im Build Prozess sehr einfach einschalten. Dazu kann man in der Build Definition „Type of run settings“ auf CodeCoverageEnabled einstellen:


Leider bekomme ich mit der Option in TFS 2013 aktuell keine Code Coverage Results:


Erst wenn man die *.runsettings Datei mit ins Projekt aufnimmt und im Build Prozess angibt funktioniert die Ausgabe der Code Coverage wieder. Die *.runsettings Datei ist dabei eine Konfiguration für die Ausführung der Unit Tests. (In Visual Studio 2010 gab es dafür z.B. noch die testsettings). Im Projekt kann man eine Xml Datei anlegen, diese in *.runsettings umbenennen den Inhalt aus der MSDN Dokumentation rein kopieren.

Siehe: http://msdn.microsoft.com/en-us/library/jj635153.aspx

Nebenbei können wir in der Datei auch gleich festlegen dass z.B. die UnitTest dll’s selbst von der Analyse ausgeschlossen werden:


In der Build Definition muss dann „Type of run settings“ auf UserSpecified stehen und der Verweis zum „Run Settings file“ muss angegeben werden:


Dann passt auch die Ausführung wieder.


Falls man immer noch keine Ergebnisse sieht liegt es wahrscheinlich daran, das auf dem Build Server kein Visual Studio Premium / Ultimate installiert ist. Falls man die Solution auf dem Build Server öffnet sollte man dort auch entsprechende Code Coverage Results bekommen.

Ergänzung 22.09.2014: Unter VS 2013.3 und TFS 2013.3 ist mir noch folgender Bug aufgefallen:

Wenn man den „Type of run settings“ direkt in den Einstellungen auf UserSpecified stellt kann es sein das die Einstellung nicht beachtet wird. Geht man hingegen über den Button in den extra Dialog und stellt die Options dort auf „Custom“ wird die Einstellung übernommen und Code Coverage funktioniert. Siehe Screenshots:



Auf Stackoverflow gibt es dazu auch einen entsprechenden Eintrag: http://stackoverflow.com/questions/24016217/tfs-2013-no-code-coverage-results