Wie kann ich eine Datei in TFS mit dem Post-Build-Ereignis auschecken, kopieren und einchecken?

Ich habe ein Projekt, das Server-Kontrollen hält. Wann immer ich Änderungen daran vornehme, möchte ich in der Lage sein, im Release-Modus zu erstellen und die Ausgabe-DLL (und ihre Dokumentations-XML-Datei) in einen Ordner in Team Foundation Server zu kopieren.

Ich habe ein Post-Build-Event herausgebracht, das:

Überprüft sowohl DLL als auch XML.Kopiert sie in den TFS-OrdnerCheckt sie mit einigen Kommentaren wieder ein.

Dies ist das Skript:

if $(ConfigurationName) == Release "$(DevEnvDir)tf" checkout /lock:none C:\CommonAssemblies\$(TargetFileName)
if $(ConfigurationName) == Release "$(DevEnvDir)tf" checkout /lock:none C:\CommonAssemblies\$(TargetName).xml
if $(ConfigurationName) == Release copy $(TargetDir)$(TargetFileName) C:\CommonAssemblies\ /Y
if $(ConfigurationName) == Release copy $(TargetDir)$(TargetName).xml C:\CommonAssemblies\ /Y
if $(ConfigurationName) == Release "$(DevEnvDir)tf" checkin C:\CommonAssemblies\$(TargetFileName) /noprompt /comment:"File checked in automatically by Post-build action in source project."
if $(ConfigurationName) == Release "$(DevEnvDir)tf" checkin C:\CommonAssemblies\$(TargetName).xml /noprompt /comment:"File checked in automatically by Post-build action in source project."

Dies funktioniert jedoch nur, wenn mindestens eine Änderung im Code und mindestens eine Änderung in einem der XML-Kommentare vorgenommen wurde. Wenn ich versuche, zweimal ohne Änderung zu erstellen, erhalte ich die Fehlermeldung:

The command "if Release == Re...... " exited with code 1.

Wie kann ich diesen Fehler beseitigen?

Im Ausgabefenster kann ich nachlesen, dass TFS keine Änderungen in der Datei festgestellt hat, und die Bearbeitung rückgängig machen.

Was kann ich zu meiner Eincheckanweisung hinzufügen, um ein solches Einchecken zu ignorieren, wenn keine Änderung festgestellt wird? Ich habe bisher mit diesem Skript gearbeitet, aber ich muss jedes Mal daran denken, dem Code ein zufälliges Leerzeichen und einen Kommentar hinzuzufügen, damit es ordnungsgemäß funktioniert. Ich muss etwas vermissen, vielleicht einen Parameter oder etwas anderes.

Hier ist ein Teil des Textes aus dem Ausgabefenster:

C:\CommonAssemblies:
  Controls.dll
C:\CommonAssemblies:
  Controls.xml
          1 file(s) copied.
          1 file(s) copied.
  C:\CommonAssemblies:
  Checking in edit: Controls.dll

  Changeset #6188 checked in.
  C:\CommonAssemblies:
  Checking in edit: Controls.xml

  The following changes were not checked in because the items were not modified.
    Undoing edit: C:\CommonAssemblies\Controls.xml

  There are no remaining changes to check in.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage