2016-03-23 13 views
3

Ich habe 8 VMS, jeder mit dem Produkt-Code. Ich habe eine Anwendung erstellt, mit der ich eine remote codedui-Automatisierung mit Mstest starten kann. Jetzt ist das Problem, jedes Mal, wenn ich die neuesten dlls auf allen 8 vms kopieren und einfügen muss, um den kürzlich aktualisierten Code auszuführen, und die Übertragung von Dateien vom lokalen Computer an vm dauert Ewigkeiten, um über das Netzwerk zu kopieren.Getting neuesten von tfs und dann die Lösung aus einer Batch-Datei

Gibt es eine Möglichkeit, eine Batchdatei zu erstellen, mit der ich den neuesten Code vom tfs-Server herunterladen und dann meinen codeui-Testcode auf jeder der VMs erstellen kann?

Ich weiß tf get und msbuild kann dafür verwendet werden, aber ich weiß nicht, wie man es korrekt verwendet, da das Erhalten von spät vom Server zu Konflikten führt, die zuerst aufgelöst werden müssen, bevor die Lösung erstellt wird.

Gibt es eine Möglichkeit, die gesamte Lösung über die Befehlszeile zu ersetzen, während die get-Operation ausgeführt wird?

Gibt es einen besseren Ansatz, um mein Problem zu lösen.

Danke!

+0

Dokumentation zum Befehl tf.exe GET: https://msdn.microsoft.com/en-us/library/fx7sdeyf(v=vs.100).aspx – user469104

+0

Wie viele MB/GB sind die kompilierten DLLs? Wie viele DLLs? Ändern sich alle DLLs jedes Mal oder in der Regel nur ein paar? Sind alle DLLs gleich groß oder gibt es ein paar große und den Rest klein? – chief7

+0

Hauptsächlich gibt es nur eine DLL. Aber es gibt auch XML-Dateien, die hinzugefügt werden, so dass die neuesten aus tfs ein Muss ist. Wenn es größere Änderungen gibt, werden 3-4 Dlls getroffen. –

Antwort

0

Sie können auch Team Foundation Power Tools (link to tfpt) verwenden. Es ist ein sehr nützliches kleines Dienstprogramm =). Specificially, wenn Sie Ihren Arbeitsplatz zu TFS identisch ist überprüfen wollen, könnten Sie verwenden:

tfpt scorch /diff /deletes /recursive /noprompt 

Sie wahrscheinlich /diff nicht brauchen, wenn Sie die MD5 diff statt nur die Nur-Lese-Bit überprüfen möchten (Dies kann auch von Server/lokalen Arbeitsbereichen abhängen). Die kann auch in diesem Fall nichts tun, da Sie keinen Stammordner angegeben haben. Das ist in Ordnung, weil ich denke, dass Sie dies auf den gesamten Arbeitsbereich anwenden möchten.

Ich bin ziemlich sicher, dass Sie dies von einem Visual Studio Dev Prompt aufrufen müssten. Sie könnten eine Zeile in der Batch-Datei hinzufügen, wie:

call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86_amd64 

Sehen Sie diese SO auf der Post: How to create a Batch File for Visual Studio Command Prompt

Mikaels Beitrag ist auch eine gute Antwort, wie meine Antwort nicht mit der Lösung von Konflikten hilft. Meine Antwort ist mehr in Richtung der Abwischen und Wiederherstellen (wie benötigt).

+0

Das funktionierte wie ein Zauber Perry. Vielen Dank! :) –

+0

Hatte nur eine Frage im Sinn, wenn ich nur die Dateien ersetzen muss, die von denen in der Server-Version geändert wurden. Kann das mit tfpt gemacht werden? –

+0

Ich würde die 'tfpt treeclean',' tfpt scorch' (wie in meiner Antwort erwähnt) und 'tfpt uu' Team Foundation Power Tool-Befehle betrachten und sehen, welche am besten zu Ihren Bedürfnissen passt. Meine beste Vermutung ist, dass 'tfpt uu' vielleicht das ist, wonach Sie suchen, wenn Scorch/Treeclean zu schwer sind. – PerryC

0

Wenn Sie die gesamte Lösung ersetzen wollen und bauen von Grund auf neu Ich schlage vor, Sie einfach den Ordner löschen und dann bekommen:

rd /s MySolutionFolder 
    tf get MySolutionFolder 

Aber dies wird natürlich einige Zeit dauern.

Sofern Sie keine Dateien auf der VM bearbeiten, sollte tf get keine Konflikte auslösen. Wenn Sie Dateien bearbeiten, können Sie eine Kombination aus tf get und tf auflösen, um diese Probleme zu beheben. Sie können so etwas verwenden, um Konflikte zu ignorieren und die Serverversion zu übernehmen.

tf get MySolutionFolder /recursive /noprompt 
tf resolve /auto:taketheirs 
+0

Danke Mikael! Dies ist eine sehr gute Lösung !! –

+0

OK, großartig! Würde es Ihnen etwas ausmachen, es als Antwort zu markieren? –

+0

Ich habe Perrys Lösung als Antwort markiert, da ich seinen Ansatz verwendet habe und für mich gearbeitet hat. –