Ich habe an dem nächsten Schritt meines fortlaufenden Integrationsprojekts gearbeitet, das lautet: TeamCity, um meine Anwendung zu erstellen, die Versionsnummer aller Assemblys automatisch zu ändern und dann ein Installationsprogramm zu erstellen .TeamCity + WiX + MSBuild Workflow-Vorschläge erforderlich
Ein wenig Hintergrund zuerst:
Ich habe erfolgreich in den letzten paar Monaten Teamcity läuft, und es baut meine Konfigurationen und läuft meine NUnit und NCover Tests gut.
Ich brauchte ein wenig Zeit für die Suche nach Installateuren - Ich habe InstallShield immer gehasst und nie für meine aktuelle Anwendung berücksichtigt. Ich mag NSIS, aber dann stieß ich zufällig auf WiX. Ich kenne keine MS-Installer-Architektur, die, wie ich finde, für komplizierte Projekte gefährlich ist. Irgendwann werde ich mehr darüber erfahren müssen. Nach ein paar Tagen des Durchwühlens von SO-Fragen, Googeln und Lesen von Blogs habe ich jedoch ein WiX-Projekt, das erfolgreich erstellt, installiert, die Anwendung ausgeführt und alles sauber deinstalliert wird. Groß!
Ich wollte auch die TeamCity Build-Konfiguration automatisch aktualisieren die Versionsnummer aller meiner Baugruppen. Ich war in der Lage, diese Funktionalität nachzubilden, indem ich die MSBuild Community Tasks auf meinem Entwicklungscomputer installierte und eine Bereitstellungskonfiguration erstellte, die ein BeforeBuild Ziel und die FileUpdate Aufgabe verwendet, um die Versionsnummer zu ändern. Das funktioniert einwandfrei, außer dass ich auf meiner Entwicklungsmaschine keine build_vcs_number_1 Umgebungsvariable ersetze.
Also das ist, wo ich jetzt bin - ich muss TeamCity das Update machen, und während es die Umgebungsvariable build_vcs_number_1 hat, kann ich nicht herausfinden, wie man die WiX MSBuild Community Tasks bekommen.
Ein Beitrag Ich lese empfohlene Einchecken der MSBuild Ziele in einen SVN-Ordner. Ich habe ein/extlib Ordner für Dinge wie diese, so dass meine Teamcity VCS Kasse Regeln wie folgt aussehen:
+:tags/2010-10-15=>src
+:extlib=>extlib
Wie komme ich aus einer Umgebungsvariablen extlib? Wenn ich den Build starte, klagt TeamCity (und richtigerweise), dass es c:\wix30\MSBuildCommunityTasks
nicht finden kann. Der eigentliche Ordner ist C:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
. Der Ordner wird automatisch erstellt, da ich eine serverseitige Überprüfung durchführe. Daher muss TeamCity eine Umgebungsvariable angeben, die ich verwenden kann, um den richtigen Pfad zu ermitteln.
Eine Sache, die ich beachten sollte, ist, dass ich in die Erstellungskonfiguration -> Eigenschaften und Umgebungsvariablen gegangen bin und die nicht intuitive Droplist mit allen vorhandenen Variablen gefunden habe, und nichts gesehen habe, das wie eine Variable klang, die auf die zeigt Arbeitsweg.
Eine mögliche Problemumgehung, die ich mir vorstellen kann, besteht darin, MSBuild Community Tasks nur auf dem Buildserver zu installieren, und dann kann ich eine Systemumgebungsvariable erstellen, auf die von <WixToolPath>
zugegriffen werden kann.
Hat jemand andere Vorschläge?
Ich frage mich nur, ob Sie immer noch so arbeiten. Ich habe etwas Ähnliches ungefähr zur selben Zeit gemacht, als diese Frage erstellt wurde, aber dann kamen Git und NuGet und ich bin langsam dazu übergegangen, NuGet als meine primäre Methode zur Verwaltung von Abhängigkeiten zu verwenden. TeamCity hat jetzt natürlich einen AssemblyInfo-Patcher und in der nächsten Version machen sie alles, was die MSBuild Community Tasks tun können. –
Ich arbeite immer noch auf diese Weise und es ist derzeit immer noch eine gute Lösung für mich, aber wenn ich mehr Bandbreite bekomme, werde ich auf jeden Fall Änderungen prüfen. Ich wollte von den MSBuild-Community-Aufgaben weggehen, weil ich jede neue Assembly modifizieren muss und das ist unbequem. – Dave