Möchte man nach einem Build, die Assembly in ein dafür bereitgestelltes Verzeichnis kopieren, kann man das recht einfach im Prä- und Postbuild-Ereignis im Visual Studio definieren. Hat man die DLL jedoch im TFS eingecheckt, muss man vor dem Kopieren dafür Sorge tragen, dass die Datei ausgecheckt wurde, ansonsten kann die eben wegen dem Schreibschutz nicht überschrieben werden.

Unter “C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE” findet man die tf.exe, die es einem erlaubt, den TFS über den Kommandozeileninterpreter zu verwenden. Wie man die einzelnen Parameter verwendet, findet man ganz leicht über die Hilfe (tf help [command]) heraus : )

Um hier aber nicht händisch vorgehen zu müssen, kann man die über folgende Einträge in den Buildereignissen diese Aufgabe automatisieren. Diese findet man in den Eigenschaften vom Projekt.

2012-01-12 13h26_44

Im Prä- und im Postbuildereignis, kann man Befehle verknüpft mit Makros, Pfade und Dateinamen angeben.

Unter dem Button Makros, findet man einige vordefinierte Makros, die man verwenden kann.

2012-01-12 13h35_441

Jedoch gibt es da noch einige mehr. Eine Liste verfügbarer Makros findet man in der MSDN.

Im Präbuildereignis checken wir die entsprechende Datei aus:

"$(DevEnvDir)tf" checkout "$(SolutionDir)../Bin/$(TargetFileName)"

und nach dem Erstellen, also im Postbuild kopieren wir die Datei und checken diese wieder ein. Hier kann man auch einen notwendigen Kommentar hinterlassen.

copy "$(TargetPath)" "$(SolutionDir)../Bin/$(TargetFileName)" "$(DevEnvDir)tf" checkin /noprompt /comment:"automatic build checkin" "$(SolutionDir)../Bin/$(TargetFileName)"

Das Ganze sieht dann wie folgt aus:

2012-01-12 13h32_29

 

Nach einem erfolgreichen Build, wird die Assembly nun ausgecheckt, durch den neuen Build ersetzt und wieder in den TFS eingecheckt.

 

Viel Spaß beim entwickeln : )

Automatisiertes Ein- und Auschecken im Buildprozess
Markiert in: